美文网首页
选择排序-堆排序

选择排序-堆排序

作者: 潦倒神仙 | 来源:发表于2019-10-21 17:27 被阅读0次
public class HeapSort {

    public static void sort(int[] arr) {

        for (int i = arr.length / 2 - 1; i >= 0; i--) {
            adjustHeap(arr, i, arr.length);
        }

        for (int i = arr.length - 1; i > 0; i--) {
            swap(arr, 0, i);
            adjustHeap(arr, 0, i);
        }

    }

    public static void swap(int[] arr, int a, int b) {
        int temp = arr[a];
        arr[a] = arr[b];
        arr[b] = temp;
    }

    public static void adjustHeap(int[] arr, int i, int length) {
        int temp = arr[i];

        for (int j = i * 2 + 1; j < length; j = j * 2 + 1) {

            if (j + 1 < length && arr[j] < arr[j + 1]) {
                j++;
            }

            if (arr[j] > temp) {
                arr[i] = arr[j];
                i = j;
            } else {
                break;
            }

            arr[i] = temp;
        }

    }

    public static void main(String[] args) {
        int[] arr = new int[] { 9, 8, 7, 6, 5, 4, 3, 2, 1 };
        sort(arr);
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]);
            System.out.print(" ");
        }
    }
}

相关文章

  • 排序

    目的 方便查找 内排序 交换 冒泡排序 快速排序 选择 直接选择 堆排序 插入 -直接插入 堆排序 基数排序

  • 03-堆排序(Heap Sort)

    堆排序(Heap Sort) 结合上一讲的内容,发现选择排序可以使用堆排序来进行优化。所以堆排序可以认为是对选择排...

  • 排序

    一、选择排序 1.堆排序 定义:堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序可参考http...

  • 3.2-选择排序-堆排序

    参考链接 选择排序:堆排序(Heap Sort) 白话经典算法系列之七 堆与堆排序 堆排序与快速排序,归并排序一样...

  • 常见的排序算法-2.1 选择排序(堆排序)

    选择排序的优化方案(堆排序)

  • iOS - 堆排序

    Demo_github 堆排序 堆排序(Heap Sort)是一种树形选择排序,是对直接选择排序的有效改进。 堆的...

  • 排序算法

    冒泡排序 插入排序 选择排序 归并排序 堆排序

  • 选择排序法

    常用的选择排序方法有两种:直接选择排序和堆排序。直接排序简单直观,但性能略差;堆排序是一种较为高效的选择排序方法,...

  • 数据结构

    Q:堆排序 A:1 堆排序算法(图解详细流程)2 堆排序 Q:排序算法时间复杂度与稳定性 选择排序为什么不稳定:举...

  • 常用算法 2018-08-31

    冒泡排序 堆排序 归并排序 快速排序 插入排序 选择排序

网友评论

      本文标题:选择排序-堆排序

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