插入排序,顾名思义,就是把一个数组中的数据插入到另一个数组里去。虽然在代码中只用到了一个数组,但是从某种意义上是把原来的数组变成了另外一个数组。废话不多说,先附上代码
public class InsertSort {
public static void main(String[] args) {
int [] numbers=new int[]{1,5,8,2,7,9};
if(numbers.length<1){
return;
}
int j=0;
for(int i=1;i<numbers.length;i++){
int temp = numbers[i];
for(j=i-1;j>=0&&numbers[j]>temp;j--){
numbers[j+1]=numbers[j];
}
numbers[j+1]=temp;
}
System.out.println(Arrays.toString(numbers));
}
}
还是之前那个例子:教官给学生按照身高排队。步骤是这样的,教官将第一个学生先叫到第二个队列里,然后对比第二个学生和第一个学生的身高,如果第一个学生比第二个学生的身高要高的话,让第一个学生向后移动一个位置,第二个学生站在第一个位置。之后,比较第三个学生和第二个学生的身高,发现他比第二个学生矮,就让第二个学生往后移动一个位置;之后,比较第三个学生和第一个学生的身高,发现他比第一个学生高,则他站在第二个位置即可…依次类推,一共也是要排n-1趟,算法复杂度为123…*(n-1)n=n(n-1)/2