public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
//int[] test = {5,4,3,2,1};
//int test[] = {5,4,3,2,1}; 两种写法都可以,建议使用上一种写法
int[] test={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,34,15,35,25,53,51};
InsertionSort(test);
}
public static void InsertionSort(int[] a) {
int key = -1; //每一轮循环的子数组的首元素
for( int k=0;k<a.length;k++ ) {
System.out.format("%d ", a[k]);
}
System.out.format("\r");
for( int i=1;i<a.length;i++ ) {
key = a[i];
int j=i-1;
for( ;j>=0 && key<a[j];j-- ) {
a[j+1] = a[j];
}
a[j+1] = key; //小循环结束
//输出小循环结果
for( int k=0;k<a.length;k++ ) {
System.out.format("%d ", a[k]);
}
System.out.format("\r");
}
/*小结:
* 1、插入排序,关键是确定2个子数组的下标走向,第一层循环从1开始,向右发展,第二层从第一层的首下标-1开始,向左发展;
* 2、每次选取右数组的首元素,与左数组逐个比较,找到插入位置,将其它元素移位。*/
}
}
【代码积累】InsertionSort
最新推荐文章于 2019-05-29 22:49:37 发布