首页 > 代码库 > 堆排序
堆排序
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] + " "); } } }
堆排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。