为防止广告,目前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;
程序循环次数会减少很多!!!
冒泡排序是一个小作品,欢迎帮助扩充这个条目。