堆排序
Posted 没有梦想的小灰灰
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了堆排序相关的知识,希望对你有一定的参考价值。
public class 堆排序 { void HeapSort(int[] arr) { for(int i = arr.length / 2; i >= 0; i--) { HeapAdjust(arr, i, arr.length - 1); } for(int i = arr.length - 1; i > 0; i--) { swap(arr, 0, i); HeapAdjust(arr, 0, i - 1); } } private void HeapAdjust(int[] arr, int s, int m) { int temp = arr[s]; for(int j = 2 * s; j <= m; j *= 2) { if(j < m && arr[j] < arr[j + 1]) ++j; if(temp >= arr[j]) break; arr[s] = arr[j]; s = j; } arr[s] = temp; } private void swap(int[] arr, int a, int b) { arr[a] = arr[a] ^ arr[b] ^ (arr[b] = arr[a]); } public static void main(String[] args) { int[] arr = {90,70,80,60,10,40,50,30,20}; 堆排序 s = new 堆排序(); s.HeapSort(arr); for(int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } } }
以上是关于堆排序的主要内容,如果未能解决你的问题,请参考以下文章