冒泡排序(BubbleSort):将数朝着一个方向不断地冒泡,不断地遍历(已排序列不需要遍历)。
改进:双向冒泡排序(Bidirectional BubbleSort):将数进行两个方向(从前往后,从后往前)的冒泡,使两端冒泡成两个序列(这样,已排序列就是一前一后两个,相比传统的冒泡多了一个)
选择排序(SelectionSort):1.从无序区选择序列中的最小元素;(遍历比较)2.与有序区的第一个元素交换,使有序区元素越来越多。
PS:不用中间元素进行交换数据的方法(a^=b;b^=a;a^=b),前提的a!=b
Shell 排序:分组进行插入排序,设置span进行分组
直接插入排序(Insertion Sort):在有序区遍历比较新元素,找到位置
改进:二叉插入排序(Binary Insertion Sort):利用二分法查找新元素的位置
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------分割线之上时间复杂度为o(n2),之下的时间复杂度为o(nlogn)-----------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
快速排序(Quick Sort ):1.从序列中找到一个元素作为基准(中间元素,性能最佳);
2.将序列进行重新排序,比基准大的数全部放在左边,比基准小的数全部放在右边;
3.递归排序。(要先判断下标的大小关系)
归并排序(Merge Sort):1.分组,排序(递归)
2.合并有序数组(申请一个空间为每个分组之和的空间,用于防止数据)
堆排序(heap Sort):堆化数组(堆顶的数为最大或者最小),交换前后,下调子堆。