- 首页 > it技术 > >
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
推荐阅读