时间复杂度为O(n^2)
冒泡排序:从前到后,两两比较,大的放到后面,比较范围逐渐向前缩小
选择排序:从一堆里选最小的放在最前面,比较范围逐渐向后缩小
插入排序:从前到后,后一个数与前面的若干数进行比较,大的数依次往后挪,直到找到比当前数小的,插入到这个数之后
时间复杂度为O(n*log n)
归并排序:让数组中的每个数单独成为长度为1的有序区间,相邻区间合并为长度为2的有序区间,再把相邻有序区间合并,得到长度为4的有序区间,依次进行合并,直到数组中所有数合并为一个有序区间
快速排序:随机选择一个数,小于它的放在它左边,大于的放右边,再对左右两边分别重复上一个过程。
(一次划分过程:将划分值放在整个数组的最后位置,设置一个小于等于区间,初始长度为0,放在数组最前面的位置,从前到后遍历数组所有元素,如果大于,就继续遍历,如果小于等于,就把当前数和小于等于区间的下一个元素互换,区间向右扩一个位置,直到最后一个值也就是划分元素,把它和小于等于区间的下一个元素互换,划分过程的时间复杂度为O(n))
希尔排序:改良的插入排序,插入排序步长为1,希尔的步长是从大到小调整的