1.原理:
·当前元素,左边为已排序数组,右边为未排序数组
·通过循环比较,将符合条件的数组元素,不断后移,为当前元素留出空档插入数据
2.逆序排列:desc
//[7777, 7777, 87, 23, 6, 5, 4, 1]
public static int[] descSort(int[] array) {
if (array.length < 2)
return array;
for (int i = 0; i < array.length - 1; i++) {
//定义当前值,从下标为1开始,左边为已排序,右边为待排序
int curr = array[i + 1];
//定义前一个值的索引
int pre = i;
//如果当前的数据 小于 前一个数据,将数组内容后移
//必须是大于等于0,否则第一第二个将会被跳过
for (; pre >= 0 && curr > array[pre]; pre--) {
//前一个后移位置,为插入留好空档
array[pre + 1] = array[pre];
}
//留好得空档插入当前值
array[pre + 1] = curr;
}
return array;
}
3.顺序排列:asc
//[1, 4, 5, 6, 23, 87, 7777, 7777]
public static int[] descSort(int[] array) {
if (array.length < 2)
return array;
for (int i = 0; i < array.length - 1; i++) {
//定义当前值,从下标为1开始,左边为已排序,右边为待排序
int curr = array[i + 1];
//定义前一个值的索引
int pre = i;
//如果当前的数据 小于 前一个数据,将数组内容后移
//必须是大于等于0,否则第一第二个将会被跳过
for (; pre >= 0 && curr < array[pre]; pre--) {
//前一个后移位置,为插入留好空档
array[pre + 1] = array[pre];
}
//留好得空档插入当前值
array[pre + 1] = curr;
}
return array;
}