Pascal快速排序 錯誤202 看不出哪裡錯了。

時間 2025-05-30 09:20:24

1樓:匿名使用者

以下的過程sort是快排的標準過程。你相應程式的如下兩行有誤:

if dl then qs(l,c);

program qsort;

r-,s-}

uses dos;

這個程式演示了快速排序 }

它產生max 個0~29999之間的隨機數,並進行排序 }排序時 關閉了棧檢查和範圍檢查,以優化執行速度 }const max = 32000;

typelist = array[1..max] of integer;

vara: list;

i: integer;

h0,m0,s0,ss0,h,m,s,ss:word;

褲缺 t1,t2:longint;

procedure sort(l,r: integer);

vari,j,x,y: integer;

begini:=l; j:=r; x:=a[(l+r) div 2];

repeat

while a[i]j then begin y:=a[i]; a[i]:=a[j]; a[j]:=y; end;

i:=i+1; j:=j-1;

end;until i>j;

if 胡凱辯l

2樓:網友

陣列部分設成[0..100]再試試呢?202好像是陣列越界錯誤吧。

pascal快速排序不隨機化快排為啥老出現202錯誤

3樓:網友

錯誤202 是棧溢位。

就是遞迴太多次。

幾種可能:1.快排沒寫錯,但過程中定義的變數佔用空間較大,資料大點多遞迴幾次自然就棧溢位了。

2.兩指標相遇時的情況沒有處理(一般是用i,j做指標。就是交換的那一段條件是i<=j 而不是i 3.再次遞迴的條件寫錯。

為什麼pascal快速排序老是出現202錯誤

4樓:

有如下兩種可能:

1、你的快排寫錯了。

2、你沒有隨機化快排,也就是在主程式中加上伏辯randomize;語運廳首句。

再在快排過程中作如下改動:

procedure qsort(l,r:longint);

var i,j,k,temp:longint;

begini:=l;j:=r;

k:=a[i+ranodm(j-i+1)];注意這裡。

repeat

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

if i<=j then

begintemp:=a[i];a[i]:=a[j];a[j]:=temp;inc(i);dec(j);

end;until i>j;

if lif iend;這樣大概就好旁數了。

5樓:譚雅

棧溢位,好像是按喚數ctrl+00改第二行(如:;)把第乙個數頃鏈橘改大(最大65520)就行雀團。

6樓:網友

202錯誤是棧爆了,有可能是因為你資料太多,或記憶體太小。

我這個快速排序錯在**了?(pascal)

7樓:潮汐之湧動

別人是until i>j;

你是while i估計是改為while i<=j do

8樓:匿名使用者

建議檢查一下格式看看。

我的快速排序錯在哪?(pascal)

9樓:武風

這個,你自己走一下單步了,最近比較忙,作業多,嗯,自己檢查一下吧。

我給你乙個正確的。

var a:array[1..1000000] of longint;

n,i:longint;

procedure qsort(s,t:longint);

var i,j,x:longint;

begini:=s;j:=t;x:=a[i];

while (iwhile (ia[i]:=a[j];

while (ia[j]:=a[i];

end;a[i]:=x;

if sif j+1end;

beginreadln(n);

for i:=1 to n do read(a[i]);

qsort(1,n);

for i:=1 to n do write(a[i],' ');

end.

pascal賽程問題exitcode=202,**錯了?

10樓:

堆疊溢位,請檢查遞迴終止條件是否完備。

11樓:

陣列太小,搞大一點。

12樓:蔣仕彪

爆棧,簡單的說是遞迴太多了。

請問我寫的快速排序演算法**出錯了?

13樓:網友

你的快排寫得好亂……給你乙個pascal版的你應該不難看懂,如果需要我可以再寫c++的。

procedure qsort(low,high:longint);

vari,j,t,mid:longint;

begini:=low;

j:=high;

mid:=a[(i+j) shr 1];//二分。

repeat

while a[i]mid do dec(j);//從小到大排序。

if i<=j then

begint:=a[i];

a[i]:=a[j];

a[j]:=t;

end;inc(i);

dec(j);

until i>j;

if lowif iend;

pascal選擇排序問題

i j是優化,這個不用說,很簡單。至於begin temp a i a i a k a k temp end 更簡單,這個幾乎排序都要有的交換過程。這個temp過程是必要的。因為你的a i 已經被a k 賦值了,就是a i a k 反過來賦值沒有意義,打個比方,a杯子有果汁,b杯子裡有可樂,你要把果...

c快速排序 演算法,C 快速排序 演算法

include using namespace std long i,j,k,x,y,z,n long a 10001 void qsort long l,long r while il qsort l,j int main 快排,自己寫的 int quicksort int list,int st...

求pascal精簡的堆排序演算法程式

孩子,用快排吧 這是最快的 程式1 program kspv const n 7 type arr array 1.n of integer vara arr i integer procedure quicksort var b arr s,t integer var i,j,x,t1 integ...