美文网首页
堆排序(Julia实现)

堆排序(Julia实现)

作者: Joshualley | 来源:发表于2018-09-10 15:10 被阅读0次

function downAdjust(array, parentIndex, length)

    # 记录父节点

    temp = array[parentIndex]

    # 定位左孩子

    childIndex = 2 * parentIndex

    while childIndex <= length

        # 如果右孩子大于左孩子,则定位到右孩子

        if childIndex + 1 < length && array[childIndex + 1] > array[childIndex]

            childIndex += 1

        end

        # 父节点大于最大子节点时,退出下沉操作

        if temp >= array[childIndex] break end

        # 用最大子节点的值覆盖父节点

        array[parentIndex] = array[childIndex]

        parentIndex = childIndex

        childIndex = 2 * childIndex

    end

    # 父节点赋值

    array[parentIndex] = temp

end

function heapSort(array)

    i::Int64 = length(array) / 2

    # 将数组构建为二叉堆

    while i >= 1

        downAdjust(array, i, length(array))

        i -= 1

    end

    print("$array==排序结果==>")

    j = length(array)

    while j > 1

        # 第一个元素和最后一个元素交换

        temp = array[j]

        array[j] = array[1]

        array[1] = temp

        # 下沉调整最大堆

        downAdjust(array, 1, j)

        j -= 1

    end

    print(arr)

end

#——————————————————————————

arr = [1 3 2 6 5 7 8 9 10 0]

println("开始堆排序")

print("$arr==二叉堆==>")

heapSort(arr)

相关文章

  • 堆排序(Julia实现)

    function downAdjust(array, parentIndex, length) # 记录父节...

  • JS实现堆排序

    原理 堆排序原理 实现 说明 堆排序对大文件很有效 堆排序是不稳定排序

  • 堆排序---基础篇

    本文主要介绍堆排序的一些基本过程和分析。 大纲 堆排序简介 堆排序代码实现 1. 堆排序简介 1.1 堆排序的存储...

  • 堆排序

    目录 1.堆排序介绍 2.堆排序图文说明 3.堆排序的时间复杂度和稳定性 4.堆排序实现 堆排序介绍 堆排序(He...

  • 堆排序的实现

    用大顶堆实现堆排序

  • 堆排序(非递归版)

    时间复杂度是O(nlogN) 但是不常用堆排序,因为堆排序不稳定 Java实现

  • 14.排序算法(5)

    1.堆排序介绍 2. 代码实现

  • python实现堆排序(HeapSort)

    python实现【堆排序】(HeapSort) 算法原理及介绍 堆排序(Heapsort)是指利用堆这种数据结构所...

  • 排序

    八大排序算法 一、归并排序 递归及非递归的JAVA实现 二、快速排序 快排算法JAVA实现 三、堆排序 堆排序堆排...

  • Javascript和堆排序

    前言 这里以递归为例,参考自慕课网刘波波老师的C++版本实现 普通堆排序(实现了一个完整的堆) 普通的堆排序首先肯...

网友评论

      本文标题:堆排序(Julia实现)

      本文链接:https://www.haomeiwen.com/subject/qqusgftx.html