Kotlin练习-堆排序
来源:互联网 发布:crocs洞洞鞋淘宝 编辑:程序博客网 时间:2024/06/05 07:03
Java版本
object HeapSort { /** * 创建最大堆结构,要求是任何非叶子节点都比它的左右两个节点都要大 */ fun createHeap(array: MutableList<Int>, i: Int) { if (array.size == 1) return //首先堆的重要特性是非叶子节点数少于size/2,所以我们只需要调整前size/2索引上的值 val leftChildIndex = 2 * i + 1 val rightChildIndex = 2 * i + 2 var max = i if (i <= array.size / 2) { //如果左子节点比当前大,那么调换位置 if (leftChildIndex < array.size && array[leftChildIndex] > array[i]) { max = leftChildIndex } //如果右子节点比当前大,那么调换位置 if (rightChildIndex < array.size && array[rightChildIndex] > array[i]) { max = rightChildIndex } if (max != i) { //调换位置 swap(array, i, max) createHeap(array, i) } } } private fun swap(array: MutableList<Int>, i: Int, max: Int) { val temp = array[i] array[i] = array[max] array[max] = temp } fun buildHeap(array: MutableList<Int>) { var i = array.size / 2 while (i >= 0) { createHeap(array, i) i-- } } /** * 堆排序 */ fun sort(array: MutableList<Int>) { var size = array.size while (size > 0) { buildHeap(array) print("${array[0]} ") //获取一次最大堆后删除后,重新生成新堆 array.removeAt(0) size-- } }}
阅读全文
0 0
- Kotlin练习-堆排序
- Kotlin练习-快速排序
- 编程练习:堆排序
- [每日练习]堆排序
- 堆排序练习代码
- 堆排序的练习
- Scala练习-堆排序
- 算法练习二 堆排序
- 堆排序练习:POJ 2388
- 堆排序练习(手痒)
- 堆排序练习(Heap Sort)
- 练习——堆排序
- Java排序算法--建立堆和堆排序(练习)
- p3110 二叉堆练习3--排序
- C++编程练习(13)----“排序算法 之 堆排序“
- 【作业存档】堆排序和插入排序的练习
- 练习《算法导论》之排序:插入排序,归并排序,堆排序,快速排序
- Kotlin练习-二分查找
- C# 串口介绍以及简单串口通信程序设计实现
- UIWebView设置为可编辑模式
- 数据结构(郝斌老师)
- JavaScript继承
- jdbc使用流程
- Kotlin练习-堆排序
- JS原型
- 2017年上海金马五校程序设计竞赛:Problem E : Find Palindrome
- Special Judge Ⅰ
- domReady
- 高德地图VueAPI(vue-amap)学习记录
- struts2(四)拦截器
- 给 Android 开发者的 RxJava 详解
- 获取class