1.直接插入排序
// 插入排 序 插入排序使用的是增量(incremental)方法;在排好字数组A[1..j-1]后,将A[j]插入,形成排好序的子数组A[1..j];
public static void insertSort(int[]arr){
for(int i=1;i<arr.length;i++)
{
int tmp=arr[i];
int j=i;
for(;j>0;j--)
if(tmp>arr[j-1]) //这样写有问题,要放到for里for(;j>0&&tmp>arr[j-1]) ;j--)
arr[j]=arr[j-1];
arr[j]=tmp;
for(int m=0;m<arr.length-1;m++){
System.out.print(arr[m]+",");
}
System.out.println("\n");
}
}
//测试
public static void main(String[] args) {
int []arr=new int[]{1,2,5,4,6,7,12,10};
//bubbleSort(arr);
// insertSort(arr);
selectSort(arr);
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
显示:
2,1,5,4,6,7,12,
5,2,1,4,6,7,12, //4是tmp,与5,2,1比,先与1比,比1大,1后移;比2大,2后移,此时j=1,然后arr[j]=tmp;
5,4,2,1,6,7,12,
6,5,4,2,1,7,12,
7,6,5,4,2,1,12,
12,7,6,5,4,2,1,
12,10,7,6,5,4,2,
12
10
7
6
5
4
2
1