几种经典的排序算法
- 冒泡
原理: 第一个与后面每一个相比较,大小不对就互换 - 选择排序
原理: 每次都找出当前所有里面的最大值,然后将最大值与最后一个相交换 -
插入排序
原理:将后面那个数插到前面有序的数组中 -
堆排序
堆排序满足两个条件:- 完全二叉树
- 父节点里面的值大于子节点里面的值【大顶堆】
原理: 一直将二叉树调整为大顶堆的结构
通过 i = (n-1)/2使整个二叉树从除了叶节点的父节点开始,从右向左,从下至上的调整
每次都比较父子节点的大小,把大的节点放到根节点的位置
将二叉树用数组方式存储
从下往上,从右向左
-
快速排序
原理:右左、右左的顺序,右小于基准就放到左,右往前移一位。左大于基准就放到右,左往后移一位 - 归并排序