zoukankan      html  css  js  c++  java
  • 排序算法C语言实现——插入排序(优于冒泡)

    为什么插入排序要优于冒泡?
      插入排序在于向已排序序列中插入新元素,主要的动作是移动元素,涉及1次赋值,即data[j] = data[j-1];
      而冒泡排序在于相邻元素交换位置,涉及3条赋值,即iTmp = data[j+1];data[j+1] = data[j];data[j] = iTmp;
      事实上插入的元素移动次数,与冒泡的元素交换次数是相同的,都等于待排序序列的逆序度。
      而冒泡比插入多了2次元素赋值。所以插入要比冒泡快。
     
    冒泡排序代码见:https://www.cnblogs.com/JoZSM/p/9768735.html
    插入排序代码如下:
    /*插入*/
    /*
    原理:
      每次从待排序序列中选取第1个元素,插入到已排序序列中。
    */
    /*O(n^2)
    */
    void InsertSort(int* data, size_t len)
    {
        size_t i=0,j=0;
        int iTemp=0;
        if(NULL == data)
        {
            /*throw("Invalid Parameter");*/
            return;
        }
        for(i=1; i<len; ++i)
        {
            iTemp = data[i];
            for(j=i; j>0; --j)
            {
                if(data[j-1] > iTemp)
                {
                    data[j] = data[j-1];
                }
                else
                {
                    break;
                }
            }
            data[j] = iTemp;
        }
    }
  • 相关阅读:
    MySQL忘记root密码的找回方法
    MySQL中的备份和恢复
    MySQL中的锁(表锁、行锁)
    设计模式之: 策略模式
    MySQL流程函数
    高效查看MySQL帮助文档的方法
    php动态获取函数参数
    设计模式之: 代理模式
    网站性能优化指标
    设计模式之: 状态模式
  • 原文地址:https://www.cnblogs.com/JoZSM/p/9794545.html
Copyright © 2011-2022 走看看