大家好,又见面了,我是你们的朋友全栈君。
常见几种java排序算法
1.插入排序
2.分治排序法,快速排序法
3.冒泡排序 low版
4.冒泡排序 bigger版
5.选择排序
6....堆排序
堆排序, 顾名思义, 就是将数据以堆的结构, 或者说类似于二叉树的结构, 每次都整理二叉树将最大值找到, 然后放到数组末尾....个人感觉有点像选择排序.都是每次遍历选择一个最大值或最小值
从下往上调整堆, 将最大值放到顶部
首先我们可以把一个数组, 从上往下, 从左到右依次放置成为二叉树
接着我们创建最大顶堆, 就是将最大的值调整到顶部...然后我们开始遍历, 把这个[0]的最大值放到最末尾, 然后再次整理二叉树, 当然将最后一位排除在外.然后我们将截至末尾的下标往前移一位....一直遍历, 把最大值放到顶部, 再调换到末尾, 到只剩最后一个元素,
找到最大值后, 放到数组后面, 并设置一个标记, 表示截止后面的都是已排序的元素, 相当于堆删除一个元素
因为是树结构, 所以整理一次树的时间复杂度是