插入排序思路总结以及算法性能分析

(一)思路:

首先大家先和我看一张图,是我从leetcodes上保存下来的

思路图

1.声明一个待插入数temp
2.待插入数前面的序列为待插入序列
3.循环:待插入数从第二个数开始,从序列的最后一位开始比较,符合循环条件就向后移动一位
4.循环结束,将待插入数,赋值给移除的“空位”

(二)代码测试:

#include 
#include 
void sort(int *arr){
    int temp;//待插入数
    int i,j;
    for(i=1;i<9;i++)
    {
        temp=arr[i];
        j=i-1;//插入序列为该数前面的序列
        while(j>=0&&temp
测试结果

(三)算法性能分析:

时间复杂度分析

1.确定向后移动一位arr[j+1]=arr[j]为基本操作
2.j的长度:子序长度为规模,则最外层n次循环
对应的基本操作次数:

如图:
时间复杂度

空间复杂度

因为该算法的辅助存储空间不随排序序列的规模的变化而变化,是个常量,因此空间复杂度为O(1)。

你可能感兴趣的:(插入排序思路总结以及算法性能分析)