快速排序是一种常用的排序方法,但是适合少量数据,一般是在30条以内最好。下面是代码
public class Sort {
/**
* 插入排序相当于打牌时候整理牌的过程。开始摸牌时,左手是空的,牌面朝下放桌子上。
* 接着我们从桌子上摸起一张牌,并将它插入到左手一把牌的正确位置中,为了找到这张牌应该放的正确位置。
* 我们需要将这张牌和左手里已有的牌,从右到左逐一比较。无论什么时候左手里的牌都是排好序的。
*
* 特性:插入排序使用的增量的方法,在已形成的数组中将新元素插入,适合小数据量的排序大约小于30个左右,
* 如果大于30就应使用合并排序。
*/
public int[] insertionSort(int [] data){
//外循环j从数据角标1开始即第二个元素开始,因为如果手里只有一张牌时是有序的。
for(int j=1;j<data.length;j++){
int key = data[j]; //需要插入的牌
int i=j-1;
//逐一与手里的牌比较,遇到比手里的牌大的值,逐一移动手里的牌(升序)
while(i>=0&&(data[i]>key)){
data[i+1]=data[i];
i=i-1;
}
//此时手里所有的牌是有序,并且找到了新摸到的牌的位置
data[i+1] = key;
}
return data;
}
public static void main(String [] args){
Sort sort = new Sort();
//插入排序
int a[] = {5,3,8,1,9};
// a = sort.insertionSort(a);
// for(int i=0;i<a.length;i++){
// System.out.println(a[i]);
// }
}
}