插入排序:

(1)直接插入排序:数据已经是排列好的(升序),将需要插入的数据从右开始比较,如果小于最右边一个,就和前一个比较,直到找到比这个数还要小的,然后插入数据即可。

(2)折半插入排序:将一个数与数组中的平均值数相比,如果比平均数小,则将最大的左移一个,然后取平均值,如果比平均值大,则最大数向右移一个,接着取平均值,如此比较下去,知道最大值和最小值和平均值是一个数的时候,如果比平均值小,则这个数插入在平均值的左侧。(里面的最大值,最小值都是数组中的数据)

(3)希尔排序:是每次将数组分成若干个组,第一次是数组长度的一半个组,第二次是一半的一半,然后是一半的一半的一半。第一次将分组的数据比较好,第二次是在第一次的基础上进行直接插入排序,也是从右开始,最后当分组是1的时候,即排序好了。

交换排序:

(4)冒泡排序:第一趟比较将第一个数和第二个比较,若第一个大则交换,第二个数和第三个比较,若第三个数大,第三个和第四个比较,以此类推,第一堂结束后将最大的数放到最底下,然后进行第二趟比较,也是从第一个开始和第二个比较,将大二大的数放到最底下,以此类推完成排序。

(5)快速排序:在数据序列中选择一个第一个值作为比较的基准值,每趟从数据序列的两端开始交替进行,先从右端开始,将小于基准值的元素交换到序列前端,将大于基准值的元素交换到序列后端,介于两者之间的位置成为基准值的最终位置。序列被划分成两个子序列,再用同样的方法分别对两个子序列进行排序,直到子序列的长度为1,完成排序 。

(6)直接选择排序:第一堂比较标记出最小的放入有序序列,也是第一个和第二个比较,标记出较小的,然后较小的和下一个比较,第一堂完成最小的选出来,第二趟选出第二小的,直到最后都排出来。

(7)堆排序:创建大根堆,首先将数据排列成完全二叉树,根据根节点大于左右子节点进行交换,然后把根节点与最初的数组中最后一个交换,接着用根节点大于左右子节点进行交换,得出第二个根节点,接着与最初的数组中倒数第二个交换,以此类推即可。

(8)归并排序:将两个或两个以上的有序子序列归并为一个有序序列,两个序列已经是有序的a,b,a中第一个和b中第一个比较,较小的放入新的序列中,然后从拿出序列的那个中取出第二个和没有拿出序列的比较,较小的放入新的序列,一次类推。