排序:
冒泡排序
前后两两进行比较、交换,大的数据往后走,小的数据往前走。每一轮最大的数据到达正确位置。
时间复杂度:轮数 * 每一轮的时间复杂度 = n * O(n) = O(n^2)
堆排序
1.利用完全二叉树构建大顶堆
2.堆顶元素和堆底元素进行交换,除了堆底元素外,其余元素继续构建大顶堆
3.重复2
时间复杂度:O(nlogn)
完全二叉树:要求数据从上到下,从左到右的顺序进行
大顶堆:父节点的值大于或等于其右孩子的值
快速排序
1.默认待排序数组中的第一个为基准数
2.定义j游标,从后往前移动,找比基准数小的,找到之后停止
3.定义i游标,从前往后移动,找比基准数大的,找到之后停止
4.i和j数值进行交换
5.重复2、3、4步,直到i和j相遇
6.基准数和相遇位置的数据进行交换,基准数到达正确位置
7.以基准数为起始点,分成左右两部分,重复上述所有,一直到数据都被拆分开为止
时间复杂度:O(nlogn)