中易网

PASCAL冒气泡法

答案:5  悬赏:0  
解决时间 2021-04-28 05:32
  • 提问者网友:护她一生,唯爱
  • 2021-04-27 22:41
PASCAL冒气泡法
最佳答案
  • 二级知识专家网友:我们只是兮以城空
  • 2021-04-27 22:46
const

  N=20;

  MAX=10;

  var

  a:array[1..N] of 1..MAX;

  temp,i,j:integer;

  begin

  randomize;

  for i:=1 to N do a:=1+random(MAX);

  writeln('Array before sorted:');

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

  writeln;

  for i:=N-1 downto 1 do

  for j:=1 to i do

  if a[j]<a[j+1] then

  begin

  temp:=a[j];

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

  a[j+1]:=temp

  end;

  writeln('Array sorted:');

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

  writeln;

  writeln('End sorted.');

  readln;

  end.
全部回答
  • 1楼网友:魅世女王
  • 2021-04-28 01:30

冒泡:var i,j,t:integer;     a:array[1..10]of integer;     flag:boolean; begin   for i:=1 to 10 do read(a[i]);   for i:=1 to 9 do       begin         flag:=true;         for j:=9 downto i do if a[j]<a[j+1] then         begin flag:=false;t:=a[j];a[j]:=a[j+1];a[j+1]:=t;end;if flag then break;end;   for i:=1 to 10 do write(a[i],' ');writeln; end.

不过冒泡我不咋用,还是快排强:

var i,j,n:integer;a:array[1..1000]of integer;   procedure qsort(top,bot:integer);   var i,j,t:integer;   begin     i:=top;j:=bot;     m:=a[(i+j) div 2];     repeat       while a[i]<m do inc(i);       while a[j]>m do dec(j);       if i<=j then         begin t:=a[i];a[i]:=a[j];a[j]:=t; inc(i);dec(j); end;     until i>j;     if i<bot then qsort(i,bot);     if j>top then qsort(top,j);   end; begin   readln(n);   for i:=1 to n do read(a[i]);   qsort(1,n);   for i:=1 to n do write(a[i],' ');writeln; end.

  • 2楼网友:哥在撩妹请勿打扰
  • 2021-04-28 01:10
冒泡排序,就是一个一个比较,for i:=1 to n-1 do for j:=i to n do 如果反序就交换,这样就排出来了,不过时间太长,建议用快排
  • 3楼网友:疯山鬼
  • 2021-04-28 00:35

    procedure sort;     var i,j,k:integer;     begin     for i:=n downto 1 do     for j:=1 to i-1 do     if a[j] >a[i] then begin     a[0]:=a[i];a[i]:=a[j];a[j]:=a[0];     end;     end;     这个是子程序

 这个是主程序

3.冒泡排序

冒泡排序又称交换排序其基本思想是:对待排序的记录的关键字进行两两比较,如发现两个

记录是反序的,则进行交换,直到无反序的记录为止。

例:输入序列数据按非减顺序输出。

程序1:

program mppx; const n=7; var a:array[1..n] of integer;     i,j,k,t:integer; begin     write('Enter date:');     for i:= 1 to n do read(a[i]);     for i:=1 to n -1 do     for j:=n downto i+1 do     if a[j-1]<a[j] then     begin t:=a[j-1];a[j-1]:=a[j];a[j]:=t end;     write('output data:');     for i:= 1 to n do write(a[i]:6);     writeln; end.

  • 4楼网友:风格单纯
  • 2021-04-27 23:42
额。。什么意思?是冒泡排序么?
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息