插入排序:插入 希尔 选择排序:选择 堆排 交换排序:冒泡 快速 归并 基数
直接插入排序: 将未排好序的元素,插入到,待排序中。
但我们并不能确定待排元素中究竟哪一部分是有序的,
所以我们一开始只能认为第一个元素是有序的
依次将其后面的元素插入到这个有序序列中来,直到整个序列有序为止。
希尔排序:
用个增量:gap 。 先将待排序列进行预排序,使待排序列接近有序,然后再对该序列进行一次插入排序
选择排序:
即每次从待排序列中选出一个最小值,然后放在序列的起始位置,直到全部待排数据排完即可。
堆排序:
要学习堆排序,首先要学习堆的向下调整算法,因为要用堆排序,你首先得建堆,而建堆需要执行多次堆的向下调整算法。
堆的向下调整算法(使用前提):
若想将其调整为小堆,那么根结点的左右子树必须都为小堆。
若想将其调整为大堆,那么根结点的左右子树必须都为大堆。
那么堆建好后,如何进行堆排序呢?
冒泡排序:
主要是两两交换,产生一个最大的数。(代码是两个for循环和一个交换操作)
快速排序:
1.选一个基准值
2.定义一个L和一个R ,小于的放左边,大于的放右边
(需要注意的是:若选择最左边的数据作为key,则需要R先走;若选择最右边的数据作为key,则需要L先走)。)
3.重复2的操作。
归并排序:
基数排序: