28.八大排序算法

package java2019; import java.util.ArrayList; //最小的K个数(附加8大排序算法) public class Demo28 { //1.冒泡排序 public static ArrayList GetLeastNumbers(int [] input,int k){ ArrayList list = new ArrayList(); if(k>input.length) return list; for(int i=0; i GetLeastNumber1(int [] input,int k){ ArrayList list = new ArrayList(); if(k>input.length) return list; for(int i =0; iinput[j]){ int temp = input[i]; input[i]=input[j]; input[j]=temp; } } list.add(input[i]); } return list; } //3.堆排序 public ArrayList GetLeastNumber2(int [] input,int k){ int i; ArrayList list = new ArrayList(); for(i=input.length/2-1; i>=0; i--){ adjustHeap(input,i,input.length); } //以上步骤建堆结束 //以下开始排序逻辑 for(i=input.length-1; i>0; i--){ swap(input,0,i); adjustHeap(input,0,i); } //以上排序结束 for(i=0; i=input[child]) break; else//下滤 input[parent] = input[child]; } input[parent]=temp; } public void swap(int input[] ,int i,int j){ int temp = input[i]; input[i] = input[j]; input[j] = temp; } //4.快速排序 public void quickSort(int [] input,int low,int high){ //递归出口 if(low>high) return; int i = low; int j = high; int key=input[low]; //完成一趟快排 while(i=key) j--; //从左往右找到第一个大于key的数(必须要加=) while(i0; gap/=2){ //对各个分组进行插入排序 for(int i=gap; i0&&inserted

    推荐阅读