时间复杂度:O(n^2)
插入排序的思想:
将数组分为两部分:一部分是排好序的,另一部分是待排序的。先假设i=0位置的元素是最小值,然后从i=1开始一直到i=arr.length把每一个元素插入到前面的有序表中。
插入流程如下图所示:(插入的数与有序列表里的数进行比较,插入到合适的 位置)
代码:
import org.junit.Test;
import java.util.Arrays;
public class inserSortTest {
@Test
public void inserTest(){
int[] arr = {0,5,2,3,1,6,9,8,11,14,12,35,23,41,24,54,122};
int temp ;
for(int i = 1;i<arr.length;i++){
if(arr[i]<arr[i-1]){//需要插入的数是arr[i],和i-1位置的数进行比较,如果比前一个数小则表示还没有找到合适的位置;并把i-1位置的数赋值给i位置(实现数的后移)
temp = arr[i];
for(int j = i ;j>=0;j--){
if(j==0){
arr[0] = temp;
break;
}
if(arr[j-1]>temp && j>0 ){
arr[j] = arr[j-1];
}else{
arr[j] = temp;
break;
}
}
}
}
System.out.println(Arrays.toString(arr));
}
}