插入排序
算法描述
插入算法就是把给定元素依次插入到一个新的数组中, 最终得到一个完整的有序数组.
-
插入排序的时间复杂度
最好情况是O(n)
最坏情况是O(n2)
平均时间复杂度为O(n2) -
插入排序的空间复杂度是O(1)
-
插入排序是一个稳定的排序算法
代码实现
Python实现:
nums = [5, 3, 6, 4, 1, 2, 8, 7]
for i in range(1, lens(nums)): #遍历未排序的数组元素
for j in range(i): #遍历已有序的数组元素
if nums[j] > nums[i]: #找到插入位置
ins = nums[i]
nums.pop(i)
nums.insert(j, ins)
break #完成插入后跳出循环
print(nums)
C++实现:
void insert_sort(int a[], int n){
for(int i = 1; i < n; i++){
int cur = a[i];
int p_i = i - 1; //p_i表示有序数组的末尾
while(p_i >= 0 && a[p_i] > cur){
a[p_i + 1] = a[p_i];
p_i--;
}
a[p_i + 1] = cur;
}
}