-
vara:array[1..100] of integer;
n,i:integer;
procedure qsort(head,last:integer);
vari,j,x:integer;
beginif head>=last then exit;
x:=a[head];
i:=head;j:=last;
while i=x) do dec(j);
a[i]:=a[j];
while (ia[j]:=a[i];
end;a[i]:=x;
qsort(head,i-1);qsort(i+1,last);遞迴。
end;begin
readln(n);
for i:=1 to n do read(a[i]);
qsort(1,n);
for i:=1 to n do write(a[i],' ');
end.可以根據需要進行修改。
-
快速排序是對氣泡排序的巧妙改進。 作者:C a.
r.霍爾於 1962 年推出。 其基本思想是:
通過一次排序將待排序的資料分成兩個獨立的部分,一部分的所有資料都小於另一部分的所有資料,然後按照這種方法快速地將兩部分資料分別排序,整個排序過程可以遞迴進行,從而實現整個資料成為有序序列。
演算法流程如下:
設待排序的陣列為 a[0]......a[n-1],首先選擇任意乙個資料(通常是第乙個資料)作為關鍵資料,然後把所有小於它的數字放在它前面,把所有大於它的數字放在它後面,這個過程稱為快速排序。 快速排序的演算法是:
1)在排序開始時設定兩個變數i和j:i=1,j=n-1;
2)以第乙個陣列元素為關鍵資料,給x賦值,即x=a[0];
5)重複步驟,直到i=j;
例如,要排序的陣列 a 的值為:(初始鍵資料:x=49)。
a[0] 、a[1]、 a[2]、 a[3]、 a[4]、 a[5]、 a[6]:
第一次交流後:27 38 65 97 76 13 49
按照演算法的第三步從後面找到它)。
第二次交換後:27 38 49 97 76 13 65
根據演算法的第四步,從前面開始求x的值,65>49,交換兩個答案摺疊鍵,此時:i=3)
第三次交換後:27 38 13 97 76 49 65
按照演算法的第五步,再次執行演算法的第三步。
第四次交流後:27 38 13 49 76 97 65
根據演算法的第四步,從前面開始求大於x的值,97>49,兩者互換,此時:j=4)
這時執行第三步,發現i=j,從而結束乙個快速排序,那麼快速排序後的結果是:27 38 13 49 76 97 65,也就是說,所以大於49的數字都在49之後,所以小於49的數字都在49前面。
快速排序就是遞迴地呼叫這個過程——在49號作為中點拆分資料序列,對前一部分和後一部分進行類似的快速排序,從而完成所有資料序列的快速排序,最後把這個資料序列變成乙個有序序列,按照這個想法對上面的陣列a進行快速排序的整個過程如圖6所示:
初始狀態。 經過快速排序,它被分為 49 個
兩部分快速分開分揀,第三步和第四步互換後,就成了完成的分揀。
76 97 65}交換第三步和第四步後,它變為“完全排序”。
SEO快速排名技術簡單來說就是:就是通過軟體點選刷流量,刷外部鏈結(做黑鏈,就像考試作弊一樣),讓**排名上公升,但排名在快速排名技術優化的幾個月內排名就會下降
Pascal編譯系統是乙個系統軟體。 Pascal 是第一種結構化程式設計語言,具有嚴格的語法、清晰的層次結構、易於編寫和可讀的程式。 Pascal語言廣泛應用於各種軟體中,程式分為名稱(程式後自提)、設定(var後定義)、開始(begin)、程式(body)、read(讀read ln)、結束(end),結構層次分明,嚴謹嚴密。 >>>More