1、算法外排序分类 2、冒泡排序 冒泡排序(Bubble Sort)属于交换排序,它的原理是:循环两两比较相邻的记录,如果反序则交换,直到没有反序的记录为止。 实现算法: /** * 冒泡排序优化后的算法 * 设置一个标记来标志一趟比较是否发生交换 * 如果没有发生交换,则数组已经有序 */ void bubbleSort(SqList *L){ int i,j; int flag = true; // flag 用来作为标记 for (i = 1; i < L->length && flag; i++) { // 若flag为true 则说明数据交换过,否则没交换过(数组已经有序) 则停止循环 flag = false; for (j = L->length - 1; j >= i; j--) { if (L->r[j] > L->r[j+1]) { swap(L, j, j+1); flag = true; // 如果有数据交换 flag为true } } } } 3、简单选择排序 简单选择排序法(Simple Selection Sort)是通过 n-i 次关键字间的比较,从 n-i+1 个记录中选出关键字最小的记录,并和第i(1<=i<=n)个记录交换。 原理是:每一次从无序数据组的数据元素中选出最小(或最大)的一个元素,存放在无序数组的开始位置,随着无序数组元素减少