插入排序:将数分成左边为有序,右边为无序,将第1个数看成有序的,将第2个数与第1个数比较,按大小排序
将第3个数与第2个数比较,将第2个数及之后的数后移一位,如果第3个数小于第2个数,则将第3个数与第1个数比较,
如果第3个数大于第1个数,则,将第3个数插入到第2个数之前,如果第3个数小于第1个数,则将第1个数及之后的数后移一位,
将第3个数插入到第1个数之前。大于的情况位置不变,等于的情况可以视为插入,不影响排序。
/* 插入排序:将数分成左边为有序,右边为无序,将第1个数看成有序的,将第2个数与第1个数比较,按大小排序;,
* 将第3个数与第2个数比较,将第2个数及之后的数后移一位,如果第3个数小于第2个数,则将第3个数与第1个数比较,
* 如果第3个数大于第1个数,则,将第3个数插入到第2个数之前,如果第3个数小于第1个数,则将第1个数及之后的数后移一位,
* 将第3个数插入到第1个数之前。大于的情况位置不变,等于的情况可以视为插入,不影响排序。*/
public class SortDemo {
public static void main(String[] args) {
int[] arr=new int[] {45,23,6,3,10,2,1};
Insertion(arr);
for(int i=0;i<arr.length;i++) {
System.out.print(arr[i]+" ");//排序后的数字之间带空格输出
}
}
public static void Insertion(int[] arr) {
for(int i=1;i<arr.length;i++) {//第一个数视为有序
for(int j=i-1;j>=0;j--) {//将右边无序数依次与左边有序数比较
if(arr[j]>arr[j+1]) {
//右边无序数小于左边一个有序数,将该数插入有序数前
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
else break;
}
}
}
}