闲来无事复习一下排序表达能力有限附代码和注释
package text;
import java.util.Arrays;
public class Demo1 {
//插入排序
//原理:将数组分为两个部分,将后一个依次与前一个进行比较,在合理的位置插入
//效率要高于选择和冒泡排序
//步骤:1给一个数组{9,1,4,2,6}人为的将要排序的两个数前后用竖线划开,例如在9和1之间人为的划一道线方便比较。
//2 取出后一个数字也就是1和前一个数字也就是9作比较
//3为什么要这个算法为插入算法呢?就是因为步骤2里取出的两个数字都需要分别放在两个新的数组里进行
//比较操作,操作完了在插入到原来的数组里面,故叫做插入算法
public static void main(String[] args) {
int [] ary = new int []{9,1,4,2,6};
ary = insertSort(ary);
System.out.println(Arrays.toString(ary));
}
public static int[] insertSort(int[] ary) {
//j是前一个数字,i是后一个数字,t是一个用来交换的起到暂时存储功能的数组
int i,j,t;
//使用for循环进行数组的遍历把第二个数字取出来(i=1)交给临时数组t
for (i=1;i
t=ary[i];
//for循环的嵌套
//j--:j需要和i做比较而且是每比较相邻的一个元素J--后指向J前面的元素继续与i比较
for (j=i-1;j>=0;j--){
//如果i
if (t
//J向后移一位
ary[j+1]=ary[j];
}else{//反之i>j则位置保持不变进行下一个数的比较
break;
}
}
//把后一位的数字插入到相应位置。(前进一位)
ary[j+1]=t;
}
return ary;
}
}
最后结果为[1, 2, 4, 6, 9]