插入排序:将一个新的数据插入到一个有序的数组中去,长度为N的数组,需要进行N-1次的排序。
/**
* @param args
* 直接插入排序
*/
public static void main(String[] args) {
int[] a={9,7,12,26,13,1,10,11}; //定义数组
int j; //定义j
for(int i=1;i<a.length;i++){ //从数组的第2位开始循环
int temp=a[i]; //将值取出 准备与前面的数比较
for(j=i;j>0&&temp<a[j-1];j--){//例:当a[1]<a[0]时 将a[0]的值给a[1]
a[j]=a[j-1];
}
a[j]=temp;//注:看数字的比较 把值放在合适的位置
}
//输出验证语句 略
分析:
数组:a={9,7,12,26,13,1,10,11} 从小到大
第一次外循环:9,7 比较 7<9
- 将7赋给一个变量temp
- 内循环体 将a[0]=9赋给a[1] 出了循环j=0
- 再将变量temp值赋给a[0]
第二次外循环:7,9,12 比较
- 将12赋给temp
- 内循环 temp满足不了<9,7 所以j循环出来 j=2
- 将temp赋值给a[2]
第三次外循环:7,9,12,26 比较 同上步骤
第四次外循环:7,9,12,26,13 比较
将13值取出交给变量temp
因为前面的数已经排好序了 a[j]=temp 也就是13这个值总会放到该出现的位置
以下略 同上