一.简介
插入排序把数据分为有序和无序2部分,遍历无序数据并插入到有序数据合适位置
二.实现
package com.vincent;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws Exception{
int[] arr = new int[32];
for(int i=0;i<arr.length;i++){
arr[i] = (int)(Math.random() * 100);
}
System.out.println(Arrays.toString(arr));
insertSort(arr);
System.out.println(Arrays.toString(arr));
}
/**
* 插入排序
* 把数据分为有序(开始假设第一个数据又有序的)、无序2部分,每次从无序数据中取出一个插入到有序数据合适位置
* @param arr
*/
public static void insertSort(int arr[]){
//遍历无序数据
for(int i=1;i<arr.length;i++){
int cur = arr[i]; //获取当前待插入数据
//把数据移动到有序数据指定位置
int j = i-1;
while(j>=0 && arr[j]>cur){
arr[j+1] = arr[j];
j--;
}
arr[j+1] = cur;
}
}
}
效果:
三.总结
时间复杂度:O(n^2)