pascal 氣泡排序,判斷大小,降序。把結果輸出到檔案中

2025-02-10 00:50:21 字數 4707 閱讀 1330

1樓:

氣泡排序的優點是特別具有穩定性:

下列程式的作用:

1.輸入乙個數n

2.輸入n個數。

3.由大到小輸出這n個數。

注:0100000

varn,i,j,temp:integer;

a:array[1..100000] of integer;

beginreadln(n);

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

for i:=1 to n-1 do

for j:=i+1 to n do

if a[i]begintemp:=a[i];

a[i]:=a[j];

a[j]:=temp;

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

writeln;

end.此程式可直接在pascal編譯器上或可執行檔案裡使用。

樓下的:我想問問你,你把氣泡排序寫這麼長,不怕比賽時超時啊?選擇排序需要用集合,不會直接使用陣列,你的老師沒用教你嗎?

2樓:網友

呵呵 似乎只有樓上比較懂啊 我也來乙個。

在資料夾內建乙個 文字文件 在裡面輸入要排序的數列 在執行程式 呵呵。

program maopao(fin,fout);

vari,j,m:integer;

a:array [1..10] of integer;

fin,fout:text;

beginassign(fin,'');

assign(fout,'');

reset(fin);

rewrite(fout);

for i:=1 to 10 do

read(fin,a[i]);

for i:=1 to 9 do

for j:=(i+1) to 10 doif (a[i]>=a[j]) then

begina[m]:=a[i];

a[i]:=a[j];

a[j]:=a[m];

end ;for i:=1 to 10 dobegin

write (fout,a[i]);

write(fout,'

end;close(fin);

close(fout);

end.

pascal氣泡排序

3樓:網友

1樓寫的冒泡沒問題,選擇有些問題,我等會更正。2樓的說法就有問題,顯然冒泡和選擇排序都為穩定排序,你何來選擇不穩定之說?快速排序才是不穩定排序。但是二樓的兩種排序都對。

冒泡:for i:=1 to n-1 do

for j=i+1 to n do

if a[i]>a[j]then begin

t:=a[i];

a[i]:=a[j];

a[j]:=t;

end;選擇:for i:=1 to n-1 do

beginmin:=99999;

for j:=i+1 to n do

if min>a[j]then

beginmin:=a[j];

min_j:=j;

end;a[min_j]:=a[i];

a[i]:=min;

end;實際上還有更好的方法,一下是我寫的排序,比他們的快一些,因為交換次數少。

以陣列a儲存待排序元素,n為元素總個數,i,j,k,tmp為變數。

for i:=1 to n-1 do

begink:=i

for j:=i+1 to n do if a[k]>a[j] then k:=j;

tmp:=a[i];

a[i]:=a[k];

a[k]:=tmp;

end;這個你可以理解為冒泡,也可以理解為選擇,總而言之相比於冒泡和選擇快就是了。

4樓:網友

錯了,判斷放在迴圈裡面。

pascal氣泡排序和選擇排序 **

5樓:網友

樓上寫的有點問題。氣泡排序每次比較相鄰的兩個數,而選擇排序每次把乙個數與之後的每個數相比較。氣泡排序是穩定的,而選擇排序是不穩定的。

氣泡排序:for i:=1 to n-1 do for j:=n downto i+1 do if s[j]s[j] then

begintemp:=s[i];

s[i]:=s[j];

s[j]:=temp;

end;

pascal氣泡排序查錯

6樓:網友

for i:=1 to n do

beginfor j:=i to n doif (a[j]>a[j+1]) thenbegink:=a[j];

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

a[j+1]:=k;

end;end;

這段改成這樣的試試。

7樓:網友

把 for i:=1 to n do 改成 for i:=1 to n-1 do

把 for j:=1 to n do 改成 for j:=1 to n-i do

然後 將。if (a[i]>a[i+1]) thenbegink:=a[i];

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

a[i+1]:=k;

這裡面的 變數 i 全部改成 j 例如 a[i] 變成 a[j]

8樓:

主要是排序部分出問題了。

修改後的程式:

for i:=1 to n do

beginfor j:=1 to n-1 doif (a[j]>a[j+1]) thenbegink:=a[j];

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

a[j+1]:=k;

end;end;

pascal 氣泡排序 給我乙個完整**

9樓:網友

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

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

10樓:網友

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

tmp,n,i,j:integer;

beginreadln(n);

for i:=1 to n do

read(a[i]);//讀入n個數。

for i:=1 to n-1 do

for j:=i+1 to n do

if a[i]>a[j]then begintmp:=a[i];

a[i]:=a[j];

a[j]:=tmp;

end;//從小到大排序 比較交換。

for i:=1 to n do

write(a[i],' ');

end.

11樓:網友

const n=10;

var a:array [0..n] of integer; i,j,x:integer;

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

for i:=1 to n-1 do

for j:=i to n do

if a[i]>a[j] then begin x:=a[i]; a[i]:=a[j]; a[j]:=x; end;

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

end.手機碼字不容易啊。

pascal 氣泡排序 幫忙找錯

12樓:網友

if (a[i]改成if (a[i]..也就是說, 不要另外加乙個change函式。我不懂pascal語法。 但大概就是這麼寫的吧。

注意不要另外加change函式。 直接在主程式 裡change.

要兩個readln我想應該是你前面輸入資料的最後輸入了乙個"回車"

第乙個readln讀取了回車。 所以要兩個readln

13樓:王八肝

1、if (a[i]改成if (a[i]2、因為你用了2個程式體,所以要兩個等待回車(readln)

14樓:嘯嘯_飛

不需要改那麼多,只需要把子程式裡面的最前面加乙個var就好了,這樣就會變成變數形參,子程式結束時改變實在引數的值,否則不會改變(就像你那個),也就出現了你那種輸入啥輸出啥的情況,至於第二問,參照ls

資料結構C語言氣泡排序問題

修改 for j n 1 j i j e69da5e887aa62616964757a686964616f31333330343162 if r j 1 key key 瞭解一下氣泡排序 bubblesort 的基本概念 依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟 首先比較第1個...

用氣泡排序法將陣列a 101,3,2,5,6,7,4,9,10,8中的數進行從大到小進行排列,並輸出排好的陣列a

include int main i,j,t for i 1 i 9 i for j 0 j 9 j if a j for i 0 i 10 i printf d n a i return 0 include void main for i 0 i 9 i for i 0 i 10 i printf...

求pascal快速排序的程式,求pascal快速排序的程式一個。

var a array 1.100 of integer i,n integer procedure pop l,r integer var p1,p2,x,t integer begin p1 l p2 r x a l r div 2 repeat while a p1 x do inc p1 w...