package test; public class Sort { public static void BubbleSort(int[] arr) { //TODO 冒泡排序 for(int i=arr.length-1;i>0;i--) { for(int j=0;j<i;j++) { if(arr[j]<arr[j+1]) { int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } } public static void InsertSort(int[] arr) { //TODO 插入排序 for(int i=1;i<arr.length;i++) { int temp = arr[i]; int index = i-1; while(index>=0 && arr[index]>temp) { arr[index+1] = arr[index]; index--; } arr[index+1] = temp; } } public static void ShellSort(int[] arr) { //TODO 希尔排序 for(int r = arr.length/2;r>=1;r=r/2) { for(int i=r;i<arr.length;i++) { int j=i-r; int temp = arr[i]; while(j>=0 && arr[j]>temp) { arr[j+r] = arr[j]; j-=r; } arr[j+r] = temp; } } } public static void Heapsort(int[] arr) { for(int i=arr.length/2-1;i>=0;i--) { Perdown(arr,i,arr.length); } for(int j=arr.length-1;j>=0;j--) { int temp = arr[j]; arr[j] = arr[0]; arr[0] = temp; Perdown(arr,0,j); } } public static void Perdown(int[] arr,int i,int length) { int child = 0; int j; int temp = arr[i]; for(j=i;j*2+2<=length-1;j=child) { child = j*2+1; if(child!=length-1 && arr[child]<arr[child+1]) { child++; } if(arr[child]>temp) { arr[j] = arr[child]; }else { break; } } arr[j] = temp; } public static void main(String[] args) { int[] test = {2,5,1,0,6,7,3}; Heapsort(test); for(int i=0;i<test.length;i++) { System.out.print(test[i]); } } }
原文:https://www.cnblogs.com/zheng123/p/11127823.html