天天看点

排序算法之插入排序排序算法之插入排序

排序算法之插入排序

前言

排序篇第三篇内容

排序原理

官话:

1、把所有元素分为两组,已排序和未排序

2、找到未排序的第一个元素,向已排序的组中进行插入操作

3、倒序遍历已经排序的元素,并进行比较,直到找到一个元素小于待插入元素(第一个满足此条件的元素),就把待插入元素放到这个位置

白话:

相当于起扑克牌,并没有进行排序,在你面前有一堆牌需要排序。拿起第一张,第二张进行比较,找到应该在的位置,以此类推完成整个数组的排序工作

时间复杂度分析

内部同样使用了双层循环,时间复杂度以大O记法记为:O(n^2)

C++实现

#include <iostream>
using namespace std;

int main()
{
    int sample[10] = { 2,4,1,3,23,5,7,0,11,14 };
    for (int i = 0; i < 10; i++) {
        int key = sample[i];
        int j = i - 1;
        while (j >= 0 && sample[j] > key) {
            sample[j + 1] = sample[j];
            j--;
            //实现插入之后目标位置后面所有元素的向后移动
        }
        sample[j + 1] = key;//实现交换数值
    }
    for (int i = 0; i < 10; i++)
        cout << sample[i] << endl;
}

           

继续阅读