插入排序
2025/7/24...小于 1 分钟
插入排序
程序角度表述:
0位置本身有序,从1开始
从0-1,比较0、1位置的数大小,如果 0 比 1 位置数大交换
从0-2,逐个比较2&1、1&0位置的大小,直到前一个位置的数小停止
。。。
从0-n,逐个比较n&n-1、...、1&0位置大小,直到前一个位置的数小停止。
时间复杂度:
package learn.note.algorithm.sort.three;
import java.util.Arrays;
/**
* @author Wang WenLei
* @date 2025/7/24 10:53
* @since 1.0
*/
public class InsertSort {
public static void main(String[] args) {
int [] data = new int[]{1,7,3,11,8,5,10,2,4,9,6};
insertSort(data);
Arrays.stream(data).forEach(System.out::println);
}
public static void insertSort(int [] data){
if (data == null || data.length <= 1) {
return;
}
for (int i = 1; i < data.length; i++) {
// 前一个比当前大,交换直到,前一个比当前小,结束循环
for (int j = i; j > 0 && data[j - 1] > data[j] ; j--) {
swap(data,j - 1,j);
}
}
}
public static void swap(int [] data,int i,int j){
int temp = data[i];
data[i] = data[j];
data[j] = temp;
}
}