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

    插入排序

    插入排序使用线性搜索来查找排序的列表中第一个元素的位置,在分类列表的一部分。是一个基本排序算法用于排序较小的数据集或插入一个新元素到前面已排序好的列表中。

    算法:

    插入排序始于第2个元素,把后面的元素依次往前面插入。

    1。假设如果数组排序到i位置,我们可以对数组进行排序,直到从第(i+1)个元素到数组最后一个元素正确插入到当前元素的前面。

    2。当前元素i正确插入到0元素到i元素。

    3。任何数组排序到第0位置(单个元素总是排序),这样就知道如何扩大,怎么对整个数组排序。

     

    属性:

    1。表现最好的情况下——当数组已经排序O(n)。总数的比较:N - 1和交流总数:N - 1。

    2。坏的情况下性能——当数组排序以相反的顺序O(n2)。n - 1迭代比较和交流。

    3。平均情况下性能- O(n2)

    4。是敏感的输入的数量取决于输入的比较与交流。

    5。它不需要任何额外的空间排序,因此O(1)额外的空间。

     

    c语言程序

    void InsertionSort(int *array , int number_of_elements)
    {
            int iter,jter;
            for(iter=1;iter<number_of_elements;iter++)
            {
                    int current_element = array[iter];
                    jter = iter-1;
                    while(jter>=0 && array[jter] > current_element)
                    {
                            array[jter+1] = array[jter];
                            jter--;
                    }
                    array[jter+1] = current_element;
            }
    }
    int main()
    {
            int number_of_elements;
            scanf("%d",&number_of_elements);
            int array[number_of_elements];
            int iter;
            for(iter = 0;iter < number_of_elements;iter++)
            {
                    scanf("%d",&array[iter]);
            }
            /* Calling this functions sorts the array */
            InsertionSort(array,number_of_elements);
            for(iter = 0;iter < number_of_elements;iter++)
            {
                    printf("%d ",array[iter]);
            }
            printf(" ");
            return 0;
    }
  • 相关阅读:
    QPS、TPS、RT、并发数、吞吐量理解和性能优化深入思考
    从开源协议到谷歌禁用华为、Docker实体清单事件
    如何画好架构图?
    使用委托的异步方法
    里氏替换原则(转)
    HTTP协议详解(转)
    httpApplication事件和asp.net生命周期(整理)
    WebDev.WebServer.exe
    正则表达式的3种匹配模式
    Code First实体与数据表之间的映射关系
  • 原文地址:https://www.cnblogs.com/lidongq/p/3969470.html
Copyright © 2011-2022 走看看