當前位置:編程學習大全網 - 網站源碼 - pascal快速排序

pascal快速排序

妳這個程序有點問題,我幫妳修改壹下。

procedure paixu(i,j:longint);

var x,i1,j1:longint;

begin

i1:=i;x:=a[i];j1:=j;

repeat

while (i1<j1)and(a[j1]>x) do j1:=j1-1;

if i1<j1 then begin a[i1]:=a[j1];i1:=i1+1 end;

while (i1<j1)and(a[i1]<x) do i1:=i1+1;

if i1<j1 then begin a[j1]:=a[i1];j1:=j1-1 end;

until i1=j1;

a[i1]:=x;i1:=i1+1;j1:=j1-1;

if i<j1 then paixu(i,j1);

if i1<j then paixu(i1,j);

end;

這是壹個過程,過程之外,此程序還定義了壹個壹維數組a[1..n]of integer(或longint,real等等),具體n值是多少我就不知道了。程序運行後,會先向數組a中讀入數據。

此過程的作用是:將數組a中第i個元素至第j個元素進行快速排序。其基本思想是:取數組a中第i個元素(即a[i])存入變量x作為比較大小的基準,找出x應排在a中的位置k(程序中由i1,j1決定),使得a[i..k-1]<=a[k]<=a[k+1..j],即a[i..k-1]中的元素皆小於等於a[k](x),a[k+1..j]中的元素皆大於等於a[k](x)。再利用分治策略(大化小的策略)進壹步對a[i..k-1]和a[k+1..j]再進行快速排序(妳也看到了最後引用paixu是自己引用自己,遞歸)直到分組對象只有壹個數據為止。

還有不明請找我細談:QQ 875997557

  • 上一篇:RC文件如何打開?RC文件怎麽打開?RC文件是什麽
  • 下一篇:Java當前源代碼
  • copyright 2024編程學習大全網