zoukankan      html  css  js  c++  java
  • 插入排序

    介绍

    每次从无序表中取出第一个元素,把它插入到有序表中的合适位置,使有序表仍然有序。

    过程

    第一趟比较前两个数,然后把第二个数按大小插入到有序表中;

    第二趟把第三个数据与前面两个数从后向前比较,插入到合适的位置;

    依次进行下去,进行了n-1趟扫描后就完成了整个排序过程。

    代码

    #include<iostream>
    using namespace std;
    
    
    void insertSort(int array[],int length){
        for (int i = 1; i < length; i++){
            if (array[i] < array[i - 1]){
                int temp = array[i];
                int k = i - 1;
                //对已经排好序的部分从后向前遍历,找到插入的位置
                for (int j = k; j >= 0 && temp<array[j]; j--){
                    array[j + 1] = array[j];
                    k--;
                }
                array[k + 1] = temp;//插入
            }
        }
    }
    int main(){
        int test[] = { 1, 3, 2, 9, 4, 0, 6, 5, 7, 12, 44, 71, 12 };
        insertSort(test,13);
        for (int i = 0; i < 13; i++){
            cout << test[i] << " ";
        }
        cout << endl;
        return 0;
    }

    效果:

    算法分析

    时间复杂度:O(n*n)

    空间复杂度:O(1)

  • 相关阅读:
    背景不动,内容滚动的解决方案(移动端)
    移动端真实1px的实现方法
    用户模板和用户场景
    构建之法阅读笔记02
    学习进度六
    NABCD
    构建之法阅读笔记01
    学习进度五
    梦断代码阅读笔记03
    地铁系统
  • 原文地址:https://www.cnblogs.com/bluebean/p/5765571.html
Copyright © 2011-2022 走看看