为防止广告,目前nocow只有登录用户能够创建新页面。如要创建页面请先登录/注册(新用户需要等待1个小时才能正常使用该功能)。

冒泡排序

来自NOCOW
跳转到: 导航, 搜索

目录

[编辑] 基本思想

冒泡排序又称交换排序其基本思想是:对待排序的记录的关键字进行两两比较,如发现两个记录是反序的,则进行交换,直到无反序的记录为止,即依次比较相邻的两个数,把大的数放在前面,小的放在后面.即首先比较第1个数和第2个数,大数放前,小数放后,然后比较第三个数和第四个数……直到比较最后两个数。第一趟结束.然后重复上述过程。由于在排序过程中,形势类似冒泡,相当于气泡上升,所以叫冒泡排序。

[编辑] 算法实例

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

[编辑] 程序1

  program mppx;
  const n=7;
  var i,j,k,t:integer;a:array[1..n] of 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.

[编辑] 程序优化

[编辑] 基本实现程序(未优化)

   for I := 1 to N-1 do
     for J := 1 to N-I do
     if A[J] < A[J+1] then begin
                           T := A[I];
                           A[I] := A[J];
                           A[J] := T;
                           end;

[编辑] 优化程序

Flag := N;
while Flag > 0 do
begin
  K := Flag - 1;
  Flag := 0;
  for I := 1 to K do
    if A[J] < A[J+1] then begin
                           T := A[I];
                           A[I] := A[J];
                           A[J] := T;
                           Flag := I;
                           end;
end;

程序循环次数会减少很多!!!

冒泡排序是一个小作品,欢迎帮助扩充这个条目。
个人工具