Java排序算法之插入排序

什么是插入排序

插入排序的基本思想就是把一个数插入到已经有序的数列中,形式就像平时打牌一样,要把一张牌插到已经有的牌中。
这里只是要把牌看成数组。
初始时要把数组的第一个元素看成有序列表,从第二个数开始,依次将当前数插入到前面的有序列表中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public static void main(String[] args){
int[] arr={5,4,3,2,1};
for(int i=1;i<arr.length;i++){ //第一次把第一个元素也就是数组的0位置上的数看成有序,所以从1位置也就是数组的第二个数开始
int temp=arr[i]; //当前数
int left=i-1; //把当前数的前面的所有数都看成有序列表
while(left>=0&&temp<arr[left]){ //依次和前面的数比较,如果当前数比前面的数小
就把前面的数后移一位,继续向前比,直到不比前面的数小为止
arr[left+1]=arr[left];
left--;
}
arr[left+1]=temp; //把当前数插入,因为之前的元素都向后移了,总会有一个空的位置,这个位置就是这个数应该插入在有序列表中的位置
}
for(int a:arr){
System.out.println(a);//由于此处采用的是从小到大排,所以结果应该为1,2,3,4,5
}
}