所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,进行递增或递减的排列操作,比如数字排序:1、2、3……,再比如字母排序:A、B、C……。排序算法,就是实现记录按照要求排列的方法。排序算法在很多领域非常实用,尤其是在复杂的大型数据处理方面。
排序算法可以分为内部排序和外部排序。
内部排序是指数据记录在内存中的排序。外部排序是因排序数据很大,一次性不能容纳全部的排序记录,而需要访问外存进行操作的排序。
今天我们讲几种常见的内部排序算法:冒泡排序、选择排序、插入排序、希尔排序、快速排序、归并排序。
一、冒泡排序
冒泡排序算法的原理:
- 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
- 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
- 针对所有的元素重复以上的步骤,除了最后一个。
- 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
二、选择排序
选择排序算法的原理:
- 第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置。
- 从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。
- 以此类推,直到全部待排序的数据元素的个数为零。
三、插入排序
插入排序算法的原理:
- 在待排序的元素中,假设前面n-1(其中n>=2)个数已经是排好顺序的。
- 将第n个数插到前面已经排好的序列中,然后找到合适自己的位置,使得插入第n个数的这个序列也是排好顺序的。
- 按照此法对所有元素进行插入,直到整个序列排为有序的过程,称为插入排序。
四、希尔排序
希尔排序属于插入类排序,是将整个有序序列分割成若干小的子序列分别进行插入排序。
希尔排序算法的原理:
先取一个正整数d1<n,把所有序号相隔d1的数组元素放一组,组内进行直接插入排序;然后取d2<d1,重复上述分组和排序操作;直至di=1,即所有记录放进一个组中排序为止。