合併排序演算法(免費pascal詳細講解,外加原始碼程式謝謝。

發布 科技 2024-04-06
2個回答
  1. 匿名使用者2024-02-07

    快速排序是對氣泡排序的改進。 其基本思想是:通過躺式排序將待排序的資料分成兩個獨立的部分,一部分的所有資料都小於另一部分的所有資料,然後根據二級方法對兩部分資料進行快速排序,整個排序過程可以遞迴進行, 從而實現整個資料成為有序序列。

    假設要排序的陣列是 a[1] ......a[n],首先選擇任意乙個資料(通常是第乙個資料)作為關鍵資料,然後把所有大於它的數字放在它的前面,把所有大於它的數字放在它後面,這個過程稱為躺著的快速排序。 說謊快速排序的演算法是:

    1)在排序開始時設定兩個變數i和j,i:=1和j:=n;

    2)取第乙個陣列元素作為關鍵資料,給x賦值,即x:=a[1];

    5)重複步驟,直到i>j;

    詳細過程示例如下:

    原始順序:[26 5 37 1 61 11 59 15 48 19]。

    我:[19 5 15 1 11] 26 [59 61 48 37]。

    II: [11 5 15 1] 19 26 [59 61 48 37]。

    三:[1 5] 11 [15] 19 26 [59 61 48 37]。

    IV:1 5 11 [15] 19 26 [59 61 48 37]。

    V:1 5 11 15 19 26 [59 61 48 37]。

    xx: 1 5 11 15 19 26 [37 48] 59 [61]。

    七:1 5 11 15 19 26 37 48 59 [61]。

    八: 1 5 11 15 19 26 37 48 59 61

    快速排序方法是所有排序方法中最快、最有效的。 操作步驟如下:

    var a:array[0..10] of integer;

    n:integer;

    procedure qsort(l,r:longint);

    var i,j,m:longint;

    beginm:=a[l];

    i:=l;j:=r;

    repeat

    while a[i]m do dec(j);

    if i<=j then begin

    a[0]:=a[i];

    a[i]:=a[j];

    a[j]:=a[0];

    inc(i);

    dec(j);

    end;until i>j;

    if lif iend;

    beginfor n:=1 to 10 do read(a[n]);

    qsort(1,10);

    for n:=1 to 10 do write(a[n]:4);

    end.

  2. 匿名使用者2024-02-06

    1.演算法思維。

    快速排序是 1962 年提出的一種除法交換排序。 它使用分而治之的策略,通常稱為分而治之的方法。

    1)分割槽法的基本思想。

    分割槽法的基本思想是將原始問題分解為多個子問題,這些子問題體積較小,但結構與原始問題相似。 遞迴求解這些子問題,然後將這些子問題的解組合成原始問題的解。

    2)快速排序的基本思想。

    設當前要排序的無序區域為 r[low..high],使用分而治之,Quicksort 的基本思想可以描述為:

    分解:在r[low..high],並使用此基準將當前無序劃分為兩個較小的子區間,左和右,r[low..pivotpos-1) 和 r[pivotpos+1..

    high],使左邊子區間內所有記錄的關鍵詞小於或等於基線記錄的關鍵詞(大概稱為透視),右子區間內所有記錄的關鍵詞大於等於,並且基礎記錄透視處於正確的位置(pivotpos),不需要參與後續排序。

    注意:分割槽的關鍵是詢問基線記錄透視點的位置。 分割槽的結果可以簡單地表示為 (note pivot=r[pivotpos]):

    r[low..pivotpos-1].keys≤r[pivotpos].key≤r[pivotpos+1..high].keys

    其中 low pivotpos high.

    求解:遞迴呼叫快速排序左右子區間 r[low..pivotpos-1) 和 r[pivotpos+1..high] 快速排序。

    組合:因為當"解決"在步驟中的兩個遞迴呼叫結束時,對它們的左子區間和右子區間進行排序。 對於快速排序,"組合"該步驟不需要做任何事情,可以看作是無操作。

    快速排序的最佳情況是 n(log2(n)),最壞的情況是 n 2

相關回答
10個回答2024-04-06

快速行(最常見和最簡單的)。

演算法的想法是分而治之。 >>>More

5個回答2024-04-06

子函式指標使用不正確!

6個回答2024-04-06

首先,我想談談搜尋引擎優化的本質,我個人認為搜尋和搜尋優化的本質是“在留下自然鏈結的同時,真正改善使用者體驗或解決使用者問題”,請注意,我所說的“真實”是真正幫助真實使用者解決真實問題, “順便說一下”是指留下外鏈是很自然的,留下外鏈的位址不是牽強附會或刻意為之。那麼,我們來談談搜尋引擎的排名機制,一般來說,它應該是最滑溜溜的,使用者體驗高,對使用者眼前的使用者有價值的資訊。