认定之前元素有序,从第二个元素开始向前比较,按照需要的顺序进行排序,升序大数在后,降序小数在后,一直到最后一个元素对比完成
public static void main(String[] args) {
int[] arr ={12,14,16,15,13,18,11,17,10,3,6,7,2,8,9,20};
insertSort(arr);
System.out.println("排序完成");
}
private static void insertSort(int[] arr) {
//升序
// 遍历数组
/* for (int i = 1; i < arr.length - 1; i++) {
//当前数字比前一个数字小
if(arr[i] < arr[i - 1]){
int j;
//当前数字临时保存
int temp = arr[i];
for (j = i - 1; j >= 0 && arr[j] > temp; j--){
//前一个数字赋给后面
arr[j + 1] = arr[j];
}
//把临时数字赋给不满足条件的后一个元素
arr[j + 1] = temp;
}
}*/
//降序
for (int i = 1; i < arr.length; i++) {
//当前数字比前一个数字大
if (arr[i] > arr[i - 1]) {
int j;
//当前数字临时保存
int temp = arr[i];
for (j = i - 1; j >= 0 && arr[j] < temp; j--) {
//前一个数字赋给后面
arr[j + 1] = arr[j];
}
//把临时数字赋给不满足条件的后一个元素
arr[j + 1] = temp;
}
}
}