排序
1.插入排序:从1到n每次增加1,保证前i个数是有序的,然后每次增加一个树进去排序。(直接插入,折半插入,希尔排序)
2.交换排序:每一趟均保证一个数在其最终位置上,冒泡排序保证最小的数(最大的数)再其最终位置。快速排序保证其第一个数再其最终位置上。(快速排序平均nlogn,目前最快内部排序,且越有序越复杂)
3.选择排序:类似于不交换数值的冒泡排序,直接将比较的来的最值输出。
堆排序:建立最小(最大)堆,每次将堆顶元素输出,将最底元素调整到堆顶,堆内调整,本质上也是选择排序。时间复杂度o(nlogn)。
4.归并和基数排序:
归并:将数组分为n路数组,将数组合并。
基数排序:元素不同位置优先级不同,先排优先级低的,再排优先级高的,保证算法的稳定性。