直接插入排序

来源:互联网 发布:数据化管理pdf下载 编辑:程序博客网 时间:2024/06/05 03:21

时间复杂度:O(n^2)
空间复杂度:O(1)
稳定性:稳定
原理:首先将第一个元素看成一个已排序的数组,然后依次将后面的数组按插入到已排序数组中并保持前面数组的有序性。
代码:

/*大学课程中各种排序算法的实现语言:C++作者:Kylin.C*/#include<iostream>#include<vector>using namespace std;//直接插入排序void InsertSort(vector<int> &arr){    if (arr.size() <= 1)        return;    for (int i = 1; i < arr.size(); ++i)    {        if (arr[i] < arr[i - 1])//如果待排数据小于前一个数据(已排数据中的最大值)则需要前插;否则不需要        {            int temp = arr[i], j = i - 1;            for (; j >= 0; --j)            {                arr[j + 1] = arr[j];                if (temp>arr[j])//找到待插入数据的位置并进行插入操作                    break;            }            arr[j+1] = temp;        }    }}int main(){    vector<int> arr{ 4, 2, 1, 4, 3, 8, 6, 5, 6 };    InsertSort(arr);    for (auto a : arr)        cout << a << " ";    cout << endl;    system("pause");    return 0;}
原创粉丝点击