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