稳定与不稳定排序
有相同的值,经过稳定排序,红色的21依然会在黑色后面,不会因为排序把原有的规则打乱,不稳定排序就有可能黑色的21排在红色的21后面
内排序与外排序(了解)
内排序在内存中排序
外排序会涉及到外部的存储空间
排序方法分类
插入类排序
直接插入排序
先把序列前两个数排序,然后把第三个插入前面两个排好序的序列中,然后进行比较找到第三个数合适的位置,以此类推
希尔排序
n是序列的元素个数
d1是5,所以每隔5个元素为一组,然后将其排序,d2是d1/2,要取奇数,所以每个3个元素为一组,然后进行排序,以此类推,最后使用直接插入排序方法,这样大大减少了插入排序的时间
交换类排序
冒泡排序
先对最后两个元素进行比较,较小的元素往左移与其左边的元素进行比较,以此类推
快速排序
将序列分为左右两组,任取一个数当序列的基准,将基准和最后一个元素比较,基准大就往后放,跟比较的元素交换位置,然后基准再与左边的第二个元素比较,以此类推,最后基准在中间,左边为较小的一组,右边为较大的一组,然后将两组元素进行排序
选择类排序
直接选择排序
选择序列中最小的元素和第一个做交换
堆排序(重要)
先建立一个堆,然后把堆顶取走,重建堆,然后再取走堆顶,以此类推
1.初建大顶堆过程,先找最后一个非叶子结点,然后将他的最大的子结点跟自己比较,如果子结点大于自己,就交换位置然后再跟倒数第二个结点比较,以此类推,要所有的结点符合堆的情况。
2.将堆顶取走,把二叉树最后一个结点放在堆顶,然后重建堆。
归并排序
基数排序(了解)
把序列元素查分成3个部分进行排序
时间复杂度、空间复杂度、稳定性(掌握)