您的位置:首页 > 编程语言 > Java开发

java排序之贰------堆排序代码

2013-09-24 21:03 344 查看
package com.xxzzycq.sort;

public class Heapsort
{
public int[] data;

private void swap(int[] exchange, int i, int j)
{
int temp = exchange[i];
exchange[i] = exchange[j];
exchange[j] = temp;
}

private void ajustHeap(int[] array, int lastIndex)
{
int lastParentIndex = (lastIndex-1)/2;

for(int i = lastParentIndex; i >= 0; i--)
{
int parentIndex = i;
int leftChild = 2*i + 1;
int rightChild = leftChild;

if(lastIndex >= 2*i + 2)
{
rightChild = 2*i + 2;
}

int maxIndex = (array[leftChild] < array[rightChild])?rightChild:leftChild;

if(array[parentIndex] < array[maxIndex])
{
swap(array, parentIndex, maxIndex);
}

}
}

public void initHeap()
{
int i;

for(i = data.length - 1; i > 0; i--)
{
ajustHeap(data, i);//建堆
swap(data, i, 0);//交换第一个(0)和最后一个(i)的值
}
}

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

}

public static void main(String[] args)
{
Heapsort heap = new Heapsort();

int[] data = new int[]{45, 65, 30 , 85, 69, 78,5, 69, 987, 42, 15, 1, 2};

heap.data = data;

heap.initHeap();

heap.display();
}
}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: