Image Modal

合肥
合肥奥数网

合肥站
奥数网

信息学竞赛常用算法与策略:排序(2)

合肥奥数网整理 2013-01-17 15:19:01

  2.插入排序

  插入排序的基本思想:经过i-1遍处理后,L[1..i-1]己排好序。第i遍处理仅将L[i]插入L[1..i-1]的适当位置p,原来p后的元素一一向右移动一个位置,使得L[1..i]又是排好序的序列。

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

  程序1:

  program crpx;

  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]);

  writeln;

  for i:=2 to n do

  begin

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

  while (k<a[j]) and (j>0) do

  begin a[j+1]:=a[j];j:=j-1 end;

  a[j+1]:=k;

  end;

  write('output data:');

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

  writeln;

  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.

  程序2:

  program mppx;

  const n=7;

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

  i,j,k,t:integer;

  bool:boolean;

  begin

  write('Enter date:');

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

  i:=1;bool:=true;

  while (i<n) and bool do

  begin

  bool:=false;

  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;bool:=true end;

  i:=i+1;

  end;

  write('output data:');

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

  writeln;

  end.

  程序3:

  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]);

  writeln;

  k:=n;

  while k>0 do

  begin

  j:=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.

首页 上一页 下一页 尾页

相关推荐

点击查看更多
重点初中
首页 导航