基本思想:
从第二个位置开始,与前面已经排序好的数组进行对比,找到合适的位置插入进去。
时间复杂度:O(n^2)
空间复杂度:O(1)
代码实现:
public class InsertSort {
public int[] insertionSort(int[] nums){
if (nums.length ==0) return nums;
int current;//当前数组
for (int i = 0;i<nums.length;i++){
current = nums[i];
int preindex=i-1;//前一个数组的下标
while (preindex>=0 && current<nums[preindex]){
nums[preindex+1] = nums[preindex];
preindex--;
}
//如果比前面的小,则互换位置
nums[preindex +1] =current;
}
return nums;
}
public static void main(String[] args) {
int[] num= new int[]{9,8,7,6,5,4,3,2,1};
InsertSort i = new InsertSort();
System.out.println(Arrays.toString(i.insertionSort(num)));
}
}