关闭

[JAVA]堆排

标签: java算法
439人阅读 评论(0) 收藏 举报
分类:

这不马上秋招了吗,熟悉熟悉算法,根据网上的原理写个堆排发现跟给的代码不一样,,,有错误请大家指出。。。

public class HeapSort {
    public static void main(String[] args) {
        int [] a={49,38,65,97,71,13,27,49,78,34,12,64,1};
        int arrayLength = a.length;
        for(int i=0;i<arrayLength-1;i++){
            creatHeap(a,arrayLength-1-i);
            swap(a,0,arrayLength-1-i);
        }

        for(int i =0;i<a.length;i++){
            System.out.print(a[i]+" ");
        }

    }

    static void creatHeap(int datas[],int lastIndex){//lastIndex=Length-1
        for(int i=(lastIndex-1)/2;i>=0;i--){
            int p = i;//根节点
            int l = 2*p+1;//左儿子(由i=(lastIndex-1)/2 可得知左儿子必存在)
            if(lastIndex>l){// 右儿子存在
                if(datas[l]<datas[l+1]){
                    swap(datas,l,l+1);
                }
            }
            if(datas[p]<datas[l]){
                swap(datas,p,l);
            }
        }
    }

    static void swap(int[] data, int i, int j) {
        int tmp=data[i];
        data[i]=data[j];
        data[j]=tmp;
    }

}
0
0
查看评论

java实现堆排

import java.util.Iterator; public class HeapSort { static int r[] = { 0, 1, 4, 3, 2, 7, 5, 6, 8, 9 }; /** * @param args */ public static void...
  • u013836020
  • u013836020
  • 2015-05-30 16:37
  • 182

排序总结-时间复杂度和空间复杂度

排序(Sorting)问题是我们再业务开发中遇到的最基本问题,因此成为各大IT公司招聘笔试面试必考内容之一。笔者也借着校园招聘对数据结构这一章节的复习对排序问题进行一个简单的总结,然后基于Java进行实现。排序分类 排序插入排序直接插入排序 折半插入排序 表插入排序 希尔排序 交换排序冒泡排序 快速...
  • nihaoxiaocui
  • nihaoxiaocui
  • 2016-08-31 16:01
  • 269

数组排序(冒泡、选择、插入、快排、希尔、桶排序、堆排序)

1、冒泡排序 它是一种较简单的排序算法。它会遍历若干次要排序的数列,每次遍历时,它都会从前往后依次的比较相邻两个数的大小;如果前者比后者大,则交换它们的位置。这样,一次遍历之后,最大的元素就在数列的末尾! 采用相同的方法再次遍历时,第二大的元素就被排列在最大元素之前。重复此操作,直到整个数列都有序...
  • weifang0626
  • weifang0626
  • 2017-02-28 10:34
  • 205

快排、堆排和归并排序的Python实现

快速排序: #! /usr/bin/env python #coding=utf-8 import random,copy def partition(lst,left,right): pivot = lst[left] pivot_index = left left ...
  • flyapy
  • flyapy
  • 2015-01-17 22:46
  • 294

Java堆排序(大顶堆)

/*堆排序*/ class HeapSort { // 对data数组从0到lastIndex建大顶堆 public static void buildMaxHeap(int[] data , int lastIndex) { for (int i = (data.length - 1)...
  • u013453970
  • u013453970
  • 2015-08-06 10:49
  • 785

改进的堆排序算法

对堆排序的改进 1.将数据初始化为大顶堆,交换第一个和最后一个元素,这里是不变的 2.重新构造大顶堆是,首先让第一个元素下降h/2的高度(h 为堆的高度) 3.下降了h/2层后判断这个元素与它的父节点谁大,如果父节点大继续下沉,下沉的结束条件为h=0    如果父节点小,...
  • fengge6715
  • fengge6715
  • 2013-11-04 14:49
  • 551

python内排序算法(冒泡 插入 选择 堆 归并 快排)

python 内排序算法
  • su92chen
  • su92chen
  • 2017-04-19 15:34
  • 197

堆排思路

堆排中心:1.建堆(调整元素所在位置)(最大堆).                     &#...
  • u013446456
  • u013446456
  • 2014-01-13 09:44
  • 368

堆排

这是文件操作进行堆排的,堆排函数写的是小顶堆,但是大顶堆的话,改一下函数部分就好,已加了注释:#include #include #include const int N = 100; void HeapAdjust(int* a, int s, int m) { int rc,...
  • u010183966
  • u010183966
  • 2013-11-22 23:22
  • 769

算法 2.4节 堆排序及其改进、索引优先队列

堆排序 public class Heap { public static void sort(Comparable[] pq) { int N = pq.length; for (int k = N/2; k >=1; k --) ...
  • winter_wu_1998
  • winter_wu_1998
  • 2018-01-12 23:05
  • 38
    个人资料
    • 访问:30842次
    • 积分:637
    • 等级:
    • 排名:千里之外
    • 原创:29篇
    • 转载:1篇
    • 译文:0篇
    • 评论:8条
    文章分类
    最新评论