——对自身掌握的排序算法的总结(算法思想和代码)——
1.直接插入排序
基本思想:将原有的数据序列分为已排序和未排序两部分,排序开始时,以原序列的第一个数据项作为已排序序列,将剩余数据项作为未排序序列;然后依次将未排序序列的各数据项按大小顺序插入到已排序序列的适当位置,直到全部数据处理完。
逻辑分析:类似于排队,老师一个一个排,矮就插到前面
2.希尔排序
基本思想:选定第一个增量d<n,把全部记录按此值从第一个记录起进行分组,所有相距为d的记录作为一组。先在各组内进行插入排序;然后缩小间隔,取第二个增量d,重复上述分组和排序过程;如此反复,直至增量值d=1为止,即所有的记录放在同一组内排序。d=n/2。
逻辑分析:跳跃式对比,优化插入排序
3.冒泡排序
基本思想:首先比较第一个数据项与第二个数据项,若为逆序,两者进行一次交换;然后比较第二个数据项和第三个数据项,若为逆序,再进行一次交换……直到第n-1个数据项与第n个数据项比较完成。上述过程称为第一轮起泡排序过程,其结果使得最大的数据项被放在第n个位置上。接下来,对第一个数据项至第n-1个数据项进行第二轮起泡排序,将次大的数据项放在第n一1个位置上。以此类推,进行后续的起泡排序过程,直到没有数据交换为止。
逻辑分析:也类似排队,先有一个队列,学生两两交换,逐步完成排序
4.快速排序
基本思想