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...