public class InsertSort {
/**
* 算法:插入排序
* 需要选择作为插入的数:从第二个开始,共n-1个数
* 每次将选择作为插入的数与前面比较,如果小于则前面的数往后移动一位,否则插入到这个位置
* @param arr
*/
public static int[] sort(int[] arr) {
for (int i = 1; i < arr.length; i++) {//总共需要选择作为插入的数为n-1个
int num = arr[i];//选择作为插入的数
int j = i - 1;//记录插入的数前一个位置的索引
for (; j >= 0; j--) {//从插入元素的前一个开始
//进行比较 如果作为插入的数小于则前面的数往后移动一位,否则进入else插入到这个位置
if (num < arr[j])
arr[j + 1] = arr[j];//前面的数往后移动一位
else
break;
}
if (num != arr[i])//说明移动了位置,需要插入
arr[j + 1] = num;//将作为比较的数插入数组中,形成新的片段有序数组
}
return arr;
}
public static void main(String[] args) {
int[]a={9,3,5,1,6,10,0,2};
a=sort(a);
for (int i : a) {
System.out.print(i);
}
}
}