Java堆排序算法
2018-03-11 15:19
253 查看
今天看算法导论,翻了一下堆排序,重新复习了一下,用Java完整清晰的写了一遍。
public class Dsort { public static void main(String[] args) { // TODO Auto-generated method stub int[] array=new int[] {5,3,17,10,84,19,6,22,9}; heapsort(array); for (int i = 0; i < array.length; i++) { System.out.println(array[i]); } } public static void swap(int[] array, int a,int b) { int temp; temp=array[a]; array[a]=array[b]; array[b]=temp; } public static void max_heapify(int[] a,int mark,int heapsize) { int largest; int l=2*mark+1,r=2*mark+2; if (l<heapsize&&a[l]>a[mark]) { largest=l; } else { largest=mark; } if (r<heapsize&&a[r]>a[largest]) { largest=r; } if (largest!=mark) { swap(a, mark, largest); max_heapify(a, largest,heapsize); } } public static void build_maxheap(int[] a) { for (int i = a.length/2-1; i >= 0; i--) { max_heapify(a,i,a.length); } } public static void heapsort(int[] a) { build_maxheap(a); int heapsize=a.length; for (int i = a.length-1; i>0; i--) { swap(a,0,i); heapsize=heapsize-1; max_heapify(a, 0, heapsize); } } }堆排序主要分为两步:1.建立初始堆(build_maxheap)2.调整堆(heapsort)。而其中很核心的一个函数就是max_heapify这个函数,两个关键步骤都要使用它来进行数据交换。我这里的算法实现的是大顶堆,给出了一个测试的例子。
相关文章推荐
- Java实现的堆排序算法
- 堆排序算法的JAVA实现
- Java实现HEAPSORT堆排序算法
- 堆排序算法java实现
- java实现堆排序算法,和大家分享一下
- java编程题:用Java实现一个堆排序算法
- Java 归并排序算法、堆排序算法实例详解
- 堆排序算法的Java实现
- 堆排序算法之Java实现
- Java 堆排序算法
- 堆排序算法的java实现
- Java堆排序算法
- 八大排序算法之堆排序算法(JAVA)
- Java实现堆排序算法
- 堆排序算法(java实现)
- Java实现的堆排序算法
- 堆排序算法——Java实现
- heap sort algorithm 堆排序算法 java实现
- 堆排序算法(Heap Sort) Java实现
- 堆排序算法及其Java实现(以大根堆为例)