《算法导论》学习总结——快速排序一、冒泡排序已知一组无序数据a[1]、a[2]、……a[n],需将其按升序排列
首先比较a[1]与a[2]的值,若a[1]大于a[2]则交换两者的值,否则不变
再比较a[2]与a[3]的值,若a[2]大于a[3]则交换两者的值,否则不变
再比较a[3]与a[4],以此类推,最后比较a[n-1]与a[n]的值
这样处理一轮后,a[n]的值一定是这组数据中最大的
再对a[1]~a[n-1]以相同方法处理一轮,则a[n-1]的值一定是a[1]~a[n-1]中最大的
再对a[1]~a[n-2]以相同方法处理一轮,以此类推
共处理n-1轮后a[1]、a[2]、……a[n]就以升序排列了
优点:稳定;缺点
慢,每次只能移动相邻两个数据
二、选择排序每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完
选择排序是不稳定的排序方法
n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果:①初始状态
无序区为r[1
n],有序区为空
②第1趟排序在无序区r[1
n]中选出关键字最小的记录r[k],将它与无序区的第1个记录r[1]交换,使r[1
1]和r[2
n]分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区
……③第i趟排序第i趟排序开始时,当前有序区和无序区分别为r[1
i-1]和r(1≤i≤n-1)
该趟排序从当前无序区中选出关键字最小的记录r[k],将它与无序区的第1个记录r交换,使r[1
i]和r分别变为记录个数增加1个的新有序区和记录个数减少1第1页共2页个的新无序区
这样,n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果
优点:移动数据的次数已知(n-1次);缺点
三、插入排序已知一组升序排列数据a[1]、a[2]、…