让一个数组顺序从小到大排序
首先利用for循环找到不规律的起始索引
这里为3~44~38, 38不符合, 记录起始索引startIndex=2
然后从不规律的索引开始, 往前面规律的(3,44)从大到小,从右至左遍历
如果小于前面的. 则一个一个替换过去,如38先替换44, 再比较3, 不满足最后得到3,38,44
所有遍历完后即排序完成了
int[] arr = {3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48};
int startIndex = -1;
for (int i = 0; i < arr.length - 1; i++) {
if (arr[i] > arr[i + 1]) {
startIndex = i + 1;
break;
}
}
for (int i = startIndex; i < arr.length; i++) {
//记录当前要插入数据的索引
int j = i;
while (j > 0 && arr[j] < arr[j - 1]) {
int temp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = temp;
j--;
}
}