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

浙公网安备 33010602011771号