第一天 主题:排序算法
排序算法是经常使用的算法,我们一定要把每一个步骤都想清楚,而且用代码实现,这样才能使我们在算法路上走得更远。
什么是排序算法的稳定性?
如果在元素序列中有两个元素R[i]和R[j],关键码K[i]=k[j],且在排序之前R[i]在R[j]的前面,在排序之后如果R[i]仍然在R[j]的前面,则称这个排序算法是稳定的,反之则称这个排序算法是不稳定的。
理解内部排序和外部排序
内部排序:数据元素是在内存中进行的排序
外部排序:数据元素太多不能同时放在内存中,而需要在排序的过程中对外存进行访问的排序过程。
常见的排序算法分为五类:
插入排序:直接插入排序和希尔排序
交换排序:冒泡排序和快速排序
选择排序:选择排序和堆排序
归并排序:归并排序
基数排序:基数排序,计数排序,桶排序
第一个排序:插入排序
基本思想:先将序列中的第1个记录看成是一个有序的子序列,然后从第2个记录起逐个进行插入,直至整个序列变成按关键字非递减有序子序列为止,整个过程进行n-1趟插入。
第i趟直接插入的操作为:当插入第i个元素时,前面i-1个序列已经排好序,第i个元素与前面元素逐个比较,找到合适的位置插入,原来位置上的元素逐个后移。
初始过程:49 38 65 97 76 13 27 49*(*特