随笔分类 -  算法

摘要:问题:国际象棋中的皇后,可以横向、纵向、斜向移动。如何在一个8X8的棋盘上放置8个皇后,使得任意两个皇后都不在同一条横线、竖线、斜线方向上? 思路: 使用递归回溯的方式。 所谓递归回溯,本质上是一种枚举法。这种方式从棋盘的第一行开始尝试摆放第一个皇后,摆放成功后,递归一层,再遵循规则在棋盘第二行来摆 阅读全文
posted @ 2018-12-18 15:41 想不出名字2333 阅读(46) 评论(0) 推荐(0)
摘要:快速排序是对起泡排序的一种改进:在起泡排序中,记录的比较和移动是在相邻位置进行的,记录每次交换只能后移一个位置,因而总的比较次数和移动次数较多。在快速排序中,记录的比较和移动是从两段向中间进行的,关键码较大的记录一次就能从前面移动到后面,关键码较小的记录一次就能从后面移动到前面,记录移动的距离较远, 阅读全文
posted @ 2017-09-11 16:09 想不出名字2333 阅读(39) 评论(0) 推荐(0)
摘要:基本思想:依次将待排序序列中的每一个记录插入到一个已排好序的序列中,知道全部记录都排好序。具体过程: (1)将整个待排序的记录序列划分为有序区和无序区,初始时有序区为待排序记录序列中的第一个记录,无序区包括所有剩余待排序的记录; (2)将无序区的第一个记录插入到有序区的合适位置中,从而使无序区减少一 阅读全文
posted @ 2017-09-11 16:09 想不出名字2333 阅读(29) 评论(0) 推荐(0)
摘要:基本思想:两两比较相邻位置的关键码,如果反序则交换,直到没有反序的记录位置。 //冒泡排序算法 void BubbleSort(int r[], int n) { for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { if ( 阅读全文
posted @ 2017-09-11 16:09 想不出名字2333 阅读(18) 评论(0) 推荐(0)
摘要:基本思想:第 i 趟排序在待排序序列r[i]~rn中选取关键码最小的记录,并和第 i 个记录交换作为有序序列的第 i 个记录。 //简单选择排序算法 void SelectSort(int r[], int n) //用0号单元作为交换操作的暂存单元 { for (int i = 0; i < n; 阅读全文
posted @ 2017-09-11 16:09 想不出名字2333 阅读(26) 评论(0) 推荐(0)