排序

循環(huán)不等式:用于幫助驗證算法的正確性,共有三個性質

1初始化:在循環(huán)的第一輪迭代開始前,是正確的

2保持:在循環(huán)的某一次迭代開始前是正確的,在下一次迭代前,也該正確

3終止:循環(huán)結束時,不等式給了我們一個有用的性質,有助于表明算法是正確的


算法步驟:反應出運行時間,主要占用運行時間的是各個循環(huán),遞歸,其重復次數(shù)多,對于單次循環(huán)時間可令為常數(shù)c,c*n則為具體運行時間


(一)插入排序法:部分排好序--單個數(shù)插入,類似迭代(屬于增量法:在排好的數(shù)組中插入,形成新數(shù)組)

插入排序法

算法的步驟為n^2,兩個內(nèi)嵌的for循環(huán)


(二)合并排序法:(屬于分治法:類似遞歸)在每個遞歸,可分為三個步驟

1分解:將原問題分解為一系列子問題

2解決:遞歸的解各個子問題,若子問題夠小,可直接求解

3合并:將子問題的解合并成原問題的解

合并排序法

算法步驟為nlgn:n表示數(shù)據(jù)的個數(shù),lgn表示該數(shù)據(jù)的層數(shù),是為2為底的對數(shù),即遞歸次數(shù)


(三)冒泡法:重復交換相鄰的兩個反序元素

算法步驟:1+2+3.+.......n,所以數(shù)量級為n^2


案例:逆序對,若i<j時,A[i]>A[j],則(i,j)為A中的一個逆序對


子函數(shù),求解兩個有序數(shù)組間的逆序對


通過遞歸將一個數(shù)組不斷細分,再合并


總結:通過循環(huán)不等式可判斷算法是否有錯,通過計算算法的運行時間可判斷該算法的效率

? ? ? ?將求解逆序對的過程轉化成排序問題,降低算法步驟

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容

  • 本文分析冒泡、選擇、插入、希爾、快速、歸并和堆排序,為不影響閱讀體驗,將關于時間、空間復雜度和穩(wěn)定性的概念放在博文...
    DeppWang閱讀 440評論 0 2
  • 概述 排序有內(nèi)部排序和外部排序,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進行排序,而外部排序是因排序的數(shù)據(jù)很大,一次不能容納全部...
    蟻前閱讀 5,222評論 0 52
  • 四. 走向世界之巔——快速排序 你可能會以為歸并排序是最強的算法了,其實不然。回想一下,歸并的時間效率雖然高,但空...
    Leesper閱讀 1,776評論 9 7
  • 本文#感悟三下鄉(xiāng),青春筑夢行#活動,本人承諾,文章內(nèi)容為原創(chuàng),且未在其他平臺發(fā)表過。 在學校正式放...
    是沐子呀閱讀 710評論 0 2
  • 臥牛山的野菊花 雪竹/文 看!臥牛山上的野菊花,漫山遍野,一簇簇,一團團裝點著...
    xuezhu766閱讀 344評論 0 0