算法基础 排序(二)

作者: 比沉默寡言话多 | 来源:发表于2016-10-12 11:31 被阅读38次

深度优先搜索

什么是深度优先搜索?

水平有限,并不能以一种通俗易懂的方式来直接说明,所以以下面的例子来说明.

题目 输出123456789的全排列

用深度优先搜索 主要是用递归的方式来进行搜索,而每次递归说明的是当前干什么

int num[10];//由于数组从0开始计数,所以我们声明一个10个长度的数组,其中第0个不使用
int book[10];//声明一个标记数组,用于标记哪些数字用过
void func(int step){//step 说明的是第几个数
    if (step > 9){//如果大于9 说明前面9个数已经放置结束,这个时候结束递归并且打印
        for (int i = 1; i < 10; i++) {
            printf("%d",num[i]);
        }
        printf("\n");
        return;//
    }
    for (int i = 1; i < 10; i++) {
        if (book[i]==0) {
            num[step] = i;
            book[i] = 1;//标记使用过
            func(step+1);
            book[i] = 0;//当递归结束返回继续执行时,这个位置的数字重新赋值,所以要把之前赋值的标记删除
        }  
    }   
}
int main(){
  func(1);
}

相关文章

  • 算法汇总

    关于算法: 基础技巧:分治、二分、贪心排序算法:快速排序、归并排序、计数排序搜索算法:回溯、递归、深度优先遍历,广...

  • 算法与数据结构简介

    0x01 算法 基础技巧:分治、二分、贪心 排序算法:快速排序、归并排序、计数排序 搜索算法:回溯、递归、深度优先...

  • 数据结构与算法-排序/二分查找

    算法中基础中的基础,排序/二分查找 排序 1.快排QuickSort 归并排序 堆排序 1. 二分查找

  • 开发者应该掌握的几种排序算法

    该篇文章主要介绍了算法基础以及几种常见的排序算法:选择排序、插入排序、冒泡排序、快速排序、堆排序。 一、算法基础 ...

  • 算法-排序算法总结

    排序类型总结 1 排序算法基础实现 2 排序算法应用 2.1 基础排序 2.2 计数排序应用 2.3 快排应用 2...

  • 算法与数据结构(二):排序篇-O(n^2)算法:选择 &

    排序基础 O(n^2)的算法虽然简单,但也实用!让我们从最简单的基础排序算法开始,打开我们的算法大门! 排序算法 ...

  • 基础排序算法总结

    排序算法分为内部排序和外部排序,而我们经常说的基础排序算法,都是内部排序算法。包括冒泡排序,选择排序,插入排序,快...

  • 排序算法

    概述 一般排序算法(以元素比较为基础) => 快速排序、归并排序、插入排序、冒泡排序、堆排序 特殊排序算法 => ...

  • 算法基础 排序(二)

    深度优先搜索 什么是深度优先搜索? 水平有限,并不能以一种通俗易懂的方式来直接说明,所以以下面的例子来说明. 题目...

  • 插入排序算法实现

    排序算法是最常见,最基础的算法,作者文集中记录了两种排序算法(插入排序,归并排序) 插入排序算法实现很简单直接,附...

网友评论

    本文标题:算法基础 排序(二)

    本文链接:https://www.haomeiwen.com/subject/wzqiyttx.html