
以下自考復習資料均由浙江自考網整理并發布,考生想要了解更多關于浙江自考報名、考試、成績查詢、畢業、歷年真題、常見問答等相關信息請關注浙江自考網,獲取浙江自考更多信息。
記錄中可用某一項來標識一個記錄,則稱為關鍵字項,該數據項的值稱為關鍵字。
排序是使文件中的記錄按關鍵字遞增(或遞減)次序排列起來。·基本操作:比較關鍵字大小;改變指向記錄的指針或移動記錄。
·存儲結構:順序結構、鏈表結構、索引結構。
經過排序后這些具有相同關鍵字的記錄之間的相對次序保持不變,則稱這種排序方法是穩定的,否則排序算法是不穩定的。
排序過程中不涉及數據的內、外存交換則稱之為"內部排序"(內排序),反之,若存在數據的內外存交換,則稱之為外排序。
內部排序方法可分五類:插入排序、選擇排序、交換排序、歸并排序和分配排序。
評價排序算法好壞的標準主要有兩條:執行時間和所需的輔助空間,另外算法的復雜程序也是要考慮的一個因素。
插入排序:·直接插入排序:·逐個向前插入到合適位置。
·哨兵(監視哨)有兩個作用:·作為臨變量存放R[i]
·是在查找循環中用來監視下標變量j是否越界。
·直接插入排序是就地的穩定排序。時間復雜度為O(n^2),比較次數為(n+2)(n-1)/2;移動次數為(n+4)(n-1)/2;
·希爾排序:·等間隔的數據比較并按要求順序排列,最后間隔為1。
·希爾排序是就地的不穩定排序。時間復雜度為O(n^1.25),比較次數為(n^1.25);移動次數為(1.6n^1.25);
交換排序:·冒泡排序:·自下向上確定最輕的一個。·自上向下確定最重的一個。·自下向上確定最輕的一個,后自上向下確定最重的
一個。
·冒泡排序是就地的穩定排序。時間復雜度為O(n^2),比較次數為n(n-1)/2;移動次數為3n(n-1)/2;
·快速排序:·以第一個元素為參考基準,設定、動兩個指針,發生交換后指針交換位置,直到指針重合。重復直到排序完成。
·快速排序是非就地的不穩定排序。時間復雜度為O(nlog2n),比較次數為n(n-1)/2;
選擇排序:·直接選擇排序:·選擇最小的放在比較區前。
·直接選擇排序就地的不穩定排序。時間復雜度為O(n^2)。比較次數為n(n-1)/2;
·堆排序·建堆:按層次將數據填入完全二叉樹,從int(n/2)處向前逐個調整位置。
·然后將樹根與最后一個葉子交換值并斷開與樹的連接并重建堆,直到全斷開。
·堆排序是就地不穩定的排序,時間復雜度為O(nlog2n),不適宜于記錄數較少的文件。。
歸并排序:·先兩個一組排序,形成(n+1)/2組,再將兩組并一組,直到剩下一組為止。
·歸并排序是非就地穩定排序,時間復雜度是O(nlog2n),
分配排序:·箱排序:·按關鍵字的取值范圍確定箱子數,按關鍵字投入箱子,鏈接所有非空箱。
·箱排序的平均時間復雜度是線性的O(n).
·基數排序:·從低位到高位依次對關鍵字進行箱排序。
·基數排序是非就穩定的排序,時間復雜度是O(d*n+d*rd)。
各種排序方法的比較和選擇:·.待排序的記錄數目n;n較大的要用時間復雜度為O(nlog2n)的排序方法;
·記錄的大小(規模);記錄大最好用鏈表作為存儲結構,而快速排序和堆排序在鏈表上難于實現;
·關鍵字的結構及其初始狀態;
·對穩定性的要求;
·語言工具的條件;
·存儲結構;
·時間和輔助空間復雜度