直接插入排序
插入排序原理
从1索引开始,把后面的元素插入之前的有序列表中,使之仍保持有序。
插入排序
package org.westos.demo;
import java.util.Arrays;
public class MyTest {
public static void main(String[] args) {
//直接插入排序:从1索引开始,把后面的元素插入之前的有序列表中,使之仍保持有序。
//3 9 2 8 7 10 1
//[3] 9 2 8 7 10 1
//[3,9] 2 8 7 10 1
// [2,3,9] 8 7 10 1
// [2,3,8,9] 7 10 1
// [2,3,7,8,9] 10 1
// [2,3,7,8,9,10] 1
// [1,2,3,7,8,9,10]
int [] arr={3,0,2,8,7,10,1,20,30,-4,8,9};
//外层循环控制轮次
for (int i = 1; i < arr.length; i++) {
//当前元素 arr[i] 前一个元素 arr[i-1]
int j=i;
while (j>0&&arr[j]<arr[j-1]){
int t=arr[j];
arr[j]=arr[j-1];
arr[j-1]=t;
j--;
}
}
System.out.println(Arrays.toString(arr));
}
}
方法2:
public class MyTest2 {
public static void main(String[] args) {
int[] arr = {3, 0, 2, 8, 7, 10, 1, 20, 30, -4, 8, 9};
//外层循环控制轮次
for (int i = 1; i < arr.length; i++) {
for(int j=i;j>0;j--){
if(arr[j]<arr[j-1]){
int t = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = t;
}
}
}
System.out.println(Arrays.toString(arr));
}
}
输出结果: