pascal冒泡程式求改。。。

時間 2025-02-28 12:40:05

1樓:打醬油小盆

乙個簡單的冒泡被你搞的這麼複雜……

procedure maopao(l,r:longint);

vari,j,t:longint;

beginfor i:=l to r-1 dofor j:=i+1 to r do

if a[i]>a[j] then

begint:=a[i];

a[i]:=a[j];

a[j]:=t;

end;end;

注:這是過程,不過主題思想差不多。

2樓:網友

樓主說的是冒泡。。1l的是選擇排序吧- -

編譯錯誤,比如最後那個do打成de了- -

pascal 冒泡程式 求詳細解析 如下

3樓:網友

program lmz1;

uses crt;//到這都沒什麼用,但可能那個readkey能用上vara:array [1..4] of integer;

l,m,z:integer;

beginwriteln('please write 4 numbers');

for l := 1 to 4 do readln(a[l]);

從這開始是排序。

for l := 1 to 4 do//意思是迴圈4次,每次生成乙個當前最大的數。

for m := 1 to 4-l do//這個迴圈用來比較當前的數與他後面的數的大小,所以這個排序把大數排到了後面,即從小到大排序。

if a[m]>a[m+1]

thenbegin

z:=a[m];

a[m]:=a[m+1];

a[m+1]:=z;

end;//交換結束,即排序結束。

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

readkey//這個如果在編譯器裡執行應該沒什麼用end.

思想就是每次迴圈都找乙個當前最大的數放到最後,下次比較就不帶它,所以for i:=1 to 4-1 do

for j:=1 to 4-i do//這個迴圈到4-i希望能夠幫上忙。

4樓:

if a[m]>a[m+1]

thenbegin

z:=a[m];

a[m]:=a[m+1];

a[m+1]:=z;

end;這段就是氣泡排序的關鍵,當a[m]>a[m+1]時,將a[m]和a[m+1]交換位置。那麼較大的數就向後移到一位,第乙個迴圈後,最大的數就會排到最後一位。

求pascal氣泡排序程式(全程式)

5樓:網友

設有n個數。

for i:=1 to n-1 do //進行n-1次比較for j:=1 to n-i do //i次確定i個最大值,故只需比較前n-i個數。

if a[j]>a[j+1] then //從小到大排序begin

p:=a[j];a[j]:=a[j+1];a[j+1]:=p;

end;

在pascal語言中,氣泡排序的改程序序是什麼?

6樓:匿名使用者

氣泡排序。氣泡排序又稱交換排序其基本思想是:對穗哪待排序的記錄的關鍵字進行兩兩比較,如發現兩個。

記錄是反序的,則進行交換,直到無反序的記錄為止。

例:輸入序列資料按非減伏納順序輸出。

程式1:program mppx;

const n=7;

var a:array[1..n] of integer;

i,j,k,t:integer;

beginwrite('缺族沒enter date:')for i:= 1 to n do read(a[i]);

for i:=1 to n -1 do

for j:=n downto i+1 doif a[j-1]0 do

beginj:=k-1;k:=0;

for i:=1 to j do

if a[i]>a[i+1] then

begin t:=a[i];a[i]:=a[i+1];a[i+1]:=t;k:=i;end;

end;write('output data:')for i:= 1 to n do write(a[i]:6);

writeln;

end.

關於pascal程式中的冒泡程式

7樓:網友

冒泡法:這是最常用的一種排序方法,其實質是:先把資料存放在陣列中,然後從第乙個開始,分別與其後所有資料進行比較,如果第乙個比其後某個資料小,則交換它們的值,一直到第乙個與其後所有資料比較完,這時第乙個資料就是最大的乙個;然後再把第二個資料再與其後資料進行比較,比較完後,第二個資料則為第二大的,這樣直到倒數第二個資料比較完後,整個陣列就已經按從大到小的順序排列了。

其作用示意如下:

假設我們已經把6個資料分別存放在n[1]至n[6]中,其值分別為:3,1,5,9,2,6。

交換前的值為: 3,1,5,9,2,6

第一步,把第乙個值與其後第乙個進行比較,這時3>1,所以值不變: 3,1,5,9,2,6

第二步:把第乙個值與其後第二個進行比較,這時3<5,所以值交換: 5,1,3,9,2,6

第三步:把第乙個值與其後第三個進行比較,這時5<9,所以值交換: 9,1,3,5,2,6

當第乙個值與其後所有值比較完後,第乙個值已經是最大的,陣列值為: 9,1,3,5,2,6

這時,重複上述第一步的操作,只是把第乙個值換成第二個值,第乙個值即第二個值與其後第乙個值進行比較,這時1<3,所以交換其值: 9,3,1,5,2,6

第二個值與其後所有值比較完後,陣列值為: 9,6,1,3,2,5

再重複進行第三個值與其後值的比較,直到第五個值與第六個值比較完後,這時陣列的值已經變為: 9,6,5,3,2,1

至此,陣列已經按從大到小的順序排好了。

程式如下 :[例]

var n:array[1..10] of integer;

i,j,t:integer;

beginfor i:=1 to 10 do readln(n[i]);

for i:=1 to 9 do begin

for j:=i+1 to 10 do begin

if n[i]t:=n[i];

n[i]:=n[j];

n[j]:=t;

end;end;

end;for i:=1 to 10 do begin

write(n[i]:5);

end;end.

8樓:

const

n=50;vara:array[1..n] of longint;

temp,i,j:integer;

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

writeln;

for i:=n-1 downto 1 dofor j:=1 to i do

if a[j]begin

temp:=a[j];

a[j]:=a[j+1];

a[j+1]:=temp

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

writeln;

readln;

end.框。好象不是冒泡吧。不過,作為後來人,我強烈建議你不要去深研冒泡,不知道都可以,最多的是選擇排序。

for i:=1 to n-1 do

for j:=i+1 to n do

if a[i]給分謝謝!

9樓:網友

program maopao;

typeshuzu=array [1..50] of integer;

vari,j,h:integer;

a:shuzu;

beginfor i:=1 to 50 do

read(a[i]);

readln;

for i:=1 to 49 do

for j:=i+1 to 50 do

if a[j-1]begin

h:=a[j-1];

a[j-1]:=a[j];

a[j]:=h;

end;for i:=1 to 50 do

write(' ',a[i]);

readln;

end.我編譯器壞了 沒除錯的。

10樓:網友

建議跳過冒泡不學。

直接學快速排序,堆排序……

11樓:

我覺得你可以用選擇排序,下面一位搞錯了,就是選擇。

pascal冒泡程式的問題

12樓:我偏入地獄

這個很簡單啦:

到5行最好加上分號(不過不加也無所絕譁褲謂)到2行最好加上雙場寬(比較直觀)

最關鍵就是最後的那個for後面不該加分號,分號放蘆鋒到下一行就好了(這個分號也可不加)並簡。

13樓:網友

是 for i:=1 to n do

writeln(a[i]);

不磨銀然就知侍是搭遊吵 for f:=1 to n dowriteln(a[f]);

14樓:網友

把倒2行的a[i] 改為a[f] 即可。

pascal程式問題,Pascal程式問題

5.var a array 1.32767 of boolean b array 1.40 of integer i,s,t integer begin for i 1 to 32767 do a i false write 1 8,2 8 a 1 true b 1 1 b 2 2 s 2 repe...

pascal程式練習題,pascal程式設計練習題答案

1 var n,s integer a array 1.3 of integer begin read n a 1 n mod 10 a 2 n div 10 mod 10 a 3 n div 100 s s a 1 a 2 a 3 write s end.2.var n integer a arr...

用pascal 程式編 「列印出30至60的偶數」

vari integer beginfor i to doif i mod 或者用odd函式 if not odd i odd x 判斷x是否為奇數。如果是值為true,反之值為false.then write i,writeln end.for i to do if i mod then writ...