躲不掉的“排序演算法”,排序演算法

來源:互聯網
上載者:User

躲不掉的“排序演算法”,排序演算法

  

     排序演算法,以前米老師講VB的時候就講過排序,隨機顯示10個數,並顯示最大的數。利用冒泡、希爾等等排序演算法都講過,這次資料機構導論再次遇到,軟考再次遇到,應該算是比較容易的一項吧。

            學習完資料結構導論,又進一步瞭解到了排序演算法。我們都知道,排序是資料處理的一種運算,因為資料處理花費的時間很多,人麼為了提高電腦的運行效率而提出了各種各樣的排序演算法。

          用米老師的話說就是“兩兩比較交換”。

    比較兩個關鍵字的大小,將記錄從一個位置移動到另一個位置。

    排序的穩定性:

    判斷穩定性,通過相同鍵值的兩個記錄在排序前後相對位置變化情況進行判斷。

        例如:已知一組資料:1、3、2、5、6、2

       通過排序得到1、2、2、3、5、6   排序前帶底線的2在不帶底線的2後面,排完序仍然在它後面就是穩定的,否則就是不穩定的。


    

1、插入排序

 

       直接插入排序:依次將每個記錄插入到一個已排好序的有序表中,得到一個新的、記錄儀數增加1的有序表。

       個人理解:通過和與前面排好的有序表資料進行比較,然後放到合適的位置去,直至排完。直接插入排序是相對於記錄數較少的一種排序。

 

2、交換排序(兩兩比較,如果兩個鍵值的大小出現逆序,則交換。)

 

      冒泡排序:將第一個記錄的鍵值和第二個記錄的鍵值進行比較,若為逆序,則交換;然後繼續比較第二個和第三個,第n-1個和第n個。

      個人理解:後一個數與前一個數進行比較,看是否需要交換。

 

      快速排序:n個記錄中取一個記錄的鍵值為標準,通過一趟排序將待排序的記錄分為小於、等於、大於這個鍵值的獨立部分,再繼續進行快速排序。

     第一趟排序比較難(對外於我來說),這個會了後面也就簡單了。一趟排序的步驟:將兩個指標i,j分別指向初始位置和最後的位置,然後反覆操作一下兩步:

(1)、j逐漸減小,並逐次比較j指向的元素和目標元素的大小,若p(j)<T則交換位置。

(2)、i逐漸增大,並逐次比較I指向的元素和目標元素的大小,若p(i)>T則交換位置。

 

3、選擇排序

           直接選擇排序:在i此選擇操作中,通過n-i次的鍵值比較,從n-i+1中選出鍵值最小的記錄,和第i(1<=i<=n-1)個記錄交換。

個人理解:找出最小的那個數與前面的數進行交換,前面排好的就不能動了。

 

          堆排序:

              首先要知道堆排序是一種樹形選擇排序.將一個初始序列建成一個堆就是一個反覆篩選的過程.

個人理解:自上而下進行調整,重建堆的過程。

4、歸併排序

將兩個或兩個以上的有序表合并成一個新的有序表。

        二路歸併排序

                是將兩個有序表合并成一個有序表的排序方法。

個人理解:1、每相鄰的兩個記錄合并,兩兩比較、排序

                      2、再兩個合并再比較進行排序。

總結:一句話“兩兩比較交換!”

         以上學習方法是非常不好的,雖然是理解了每一種排序,但是沒有進行比較,沒有編製知識網,每種排序都有可能有相似之處,也有差別之處,用的過程可能會混淆。

學習方法: 結合以前老師講過的,把它當做舊知識來重溫,簡單化,其實就是舊知識。

          遇到的問題:

          因為自己沒有去相互比較每種排序,而每種排序又有一些相似之處,所有會混淆。

插入排序VS冒泡排序:插入排序是從第二個鍵值開始,與前面的數進行比較,放到合適的位置;

                     冒泡排序是1和2的鍵值比較,2和3的鍵值比較。。。。。。n和n-1的鍵值比較,出現逆序則交換。

冒泡排序VS直接選擇排序:

                    冒泡排序是一個又三角,直接選擇排序是一個左三角。

                    冒泡排序整個排序過程至多進行n-1趟起泡,直接選擇排序進行n-1次比較,每趟找出最小(最大)的那個鍵值與前面的進行交換。

    這樣自己容易混的就不會記混了。個人理解可能存在問題,望大家指出,謝謝。




形容那種躲都躲不掉 像幽靈樣 是哪個成語呐

陰魂不散
 
一首歌,歌詞有句是躲不掉忘不了好像還有一句是昔日你對我的好女生唱的,節奏一般快

你說的是不是“到不了”
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.