最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解析shell排序的實現(xiàn)代碼

 更新時間:2013年05月16日 17:27:42   作者:  
本篇文章是對shell排序的實現(xiàn)代碼進行了詳細的分析介紹,需要的朋友參考下
復制代碼 代碼如下:

#include <iostream>
using namespace std;
void ShellQin(int A[],int n)
{
    int gap=n/2;
    int i,j;
    for(;gap>0;gap=gap/2)//設置初始gap,按照gap進行分組,gap按照gap/2遞減
    {
        //設置好gap以后,從gap開始一直到最后一個元素,為每一個元素在其對應的組進行插入排序。gap應該是該組所在位置的第2個元素,第一個元素位置是0
        for(i=gap;i<n;i++)
        {
            j=i;
            //對一組進行插入排序
            if(A[j-gap]>A[j])
            {
                /*如果A[j]>A[j-gap]意味著A[j]大于其所在組的前一個位置,那么將
                  A[j]保存在temp中,將從組中所有大于A[j]的數(shù)后移,最后空出來的位置
                  存放A[j]
                */
                int temp=A[j];//保存A[J]
                do
                {
                    A[j]=A[j-gap];
                    j=j-gap;
                }while(j>=0&&temp<A[j]);//后移每一個大于A[j]的數(shù)
                A[j+gap]=temp;//將A[j]插入到合適的位置
            }
        }
    }
    for(i=0;i<n;i++)
    {
        cout<<*(A+i)<<" ";
    }
}
int main1()
{
    int a[]= {5,4,3,21,1,100,93,1,3,2,4};
    ShellQin(a,11);
    return 0;
}

和朋友討論過后,雖然希爾和插排最壞的情況都是n平方,認為希爾效率要比插排好的原因是,時間復雜度前面的系數(shù)要小于插排,特別是逆序的時候,很明顯的減少了比較的次數(shù)。就如同快排之于堆排,快排前的系數(shù)遠小于堆排,加上簡單易用所以稱為程序員們最愛。
下面的這種算法也叫做shell排序,與上面的區(qū)別在于進行插入排序的時候用交換相鄰兩個數(shù)據(jù)代替了移位(即先取出key關鍵字,將大于key的值向后移位)
復制代碼 代碼如下:

//交換兩個小數(shù)
void swapdouble(double *a,double *b){
   double temp=*a;
   *a=*b;
   *b=temp;
}
void Shell(double* p,int n)
{
    int gap=n/2;
    int i,j;
    for(;gap>0;gap=gap/2)
    {
        for(i=gap;i<=n-1;i++)//從gap開始為所在的每個組進行插入排序,i=gap是該組的第二個元素
        {
            j=i;
            if(*(p+j)<*(p+j-gap))
            {
                while(j>=gap && *(p+j)<*(p+j-gap))
                {
                    swapdouble(p+j,p+j-gap);
                    j=j-gap;
                }
            }
        }
    }
}

相關文章

  • 推薦幾款實用的C++ 在線工具

    推薦幾款實用的C++ 在線工具

    這篇文章主要推薦了幾款實用的C++ 在線工具,幫助大家更好的進行c++開發(fā),感興趣的朋友可以了解下載。
    2020-10-10
  • C++?各種map特點對比分析

    C++?各種map特點對比分析

    文章比較了C++中不同類型的map(如std::map,?std::unordered_map,?std::multimap,?std::unordered_multimap,?hash_map)的底層實現(xiàn)、元素順序、鍵的唯一性以及查找和插入刪除操作的效率,感興趣的朋友一起看看吧
    2025-03-03
  • 二叉樹中葉子節(jié)點的統(tǒng)計和樹高問題

    二叉樹中葉子節(jié)點的統(tǒng)計和樹高問題

    今天小編就為大家分享一篇關于二叉樹中葉子節(jié)點的統(tǒng)計和樹高問題,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • OpenCV使用BSM統(tǒng)計視頻中移動的對象

    OpenCV使用BSM統(tǒng)計視頻中移動的對象

    這篇文章主要為大家詳細介紹了OpenCV如何使用BackgroundSubstractor(BSM)實現(xiàn)視頻中移動對象統(tǒng)計功能,文中的示例代碼講解詳細,需要的可以參考一下
    2023-02-02
  • 純C語言:貪心Prim算法生成樹問題源碼分享

    純C語言:貪心Prim算法生成樹問題源碼分享

    這篇文章主要介紹了貪心Prim算法生成樹問題源碼,有需要的朋友可以參考一下
    2014-01-01
  • C++ STL 四種智能指針的用法詳解

    C++ STL 四種智能指針的用法詳解

    C++ 標準模板庫 STL(Standard Template Library) 一共給我們提供了四種智能指針:auto_ptr、unique_ptr、shared_ptr 和 weak_ptr,今天給大家詳細介紹這幾種指針的具體用法,需要的朋友參考下吧
    2021-06-06
  • C++學習之如何進行內(nèi)存資源管理

    C++學習之如何進行內(nèi)存資源管理

    與java、golang等自帶垃圾回收機制的語言不同,C++并不會自動回收內(nèi)存,這往往會導致內(nèi)存泄漏和內(nèi)存溢出等問題,所以掌握C++中的內(nèi)存管理技巧和工具是非常重要的,本文就來和大家詳細講講
    2023-05-05
  • C++ 深入淺出探索模板

    C++ 深入淺出探索模板

    人們需要編寫多個形式和功能都相似的函數(shù),因此有了函數(shù)模板來減少重復勞動;人們也需要編寫多個形式和功能都相似的類,于是 C++ 引人了類模板的概念,編譯器從類模板可以自動生成多個類,避免了程序員的重復勞動
    2022-04-04
  • C++學校運動會管理系統(tǒng)的實現(xiàn)

    C++學校運動會管理系統(tǒng)的實現(xiàn)

    這篇文章主要為大家詳細介紹了C++如何實現(xiàn)學校運動會管理系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • linux之a(chǎn)wk命令的用法

    linux之a(chǎn)wk命令的用法

    awk是一個非常棒的數(shù)字處理工具。相比于sed常常作用于一整行的處理,awk則比較傾向于將一行分為數(shù)個“字段”來處理。運行效率高,而且代碼簡單,對格式化的文本處理能力超強
    2013-10-10

最新評論

从化市| 富平县| 青河县| 芜湖县| 临城县| 邳州市| 石狮市| 奉节县| 黄冈市| 汶上县| 星子县| 松溪县| 青阳县| 广河县| 房产| 福州市| 曲麻莱县| 绥化市| 盈江县| 和政县| 高邑县| 武汉市| 疏附县| 古丈县| 西吉县| 额济纳旗| 双柏县| 宣汉县| 商洛市| 呼和浩特市| 台湾省| 大安市| 漳州市| 龙井市| 华坪县| 留坝县| 鹤庆县| 彭山县| 信阳市| 泾源县| 河池市|