【六月五号】排序算法之冒泡排序
今天说的仍然是一中简单排序——冒泡排序,时间复杂度O(n^2)。
其基本思想是:
通过相邻元素之间的比较和交换使较小的元素逐渐从后向前移动,就像水底的气泡一样逐渐向上冒。
具体过程如下:
首先比较d[n]和d[n-1],若d[n]<d[n-1],则交换,使较小的元素前移,较大的元素后移;接着比较d[n-1]和d[n-2],以此类推,直到比较d[2]和d[1]并使较小的元素前移,第一趟排序结束,则d[1]为最小的元素。然后在d[2]..d[n]间进行第二趟排序,使第二小元素前移到d[2]位置;n-1趟排序后,整个冒泡排序结束。
假设我们将把225 220 41 190 242 185 42 231这8个数排序
排序过程演示
初始关键字:[225 220 41 190 242 185 42 231]不交换
d[8]和d[7]:[225 220 41 190 242 185 42 231]交换
d[7]和d[6]:[225 220 41 190 242 42 185 231]交换
d[6]和d[5]:[225 220 41 190 42 242 185 231]交换
d[5]和d[4]:[225 220 41 42 190 242 185 231]不交换
d[4]和d[3]:[225 220 41 42 190 242 185 231]交换
d[3]和d[2]:[225 41 220 42 190 242 185 231]交换
d[2]和d[1]:[41 225 220 42 190 242 185 231]
以上是一趟排序的演示,总共需要进行n-1趟排序
第一趟排序后:41 [225 220 42 190 242 185 231]
第二趟排序后:41 42 [225 220 185 190 242 231]
第三趟排序后:41 42 185 [225 220 190 231 242]
第四趟排序后:41 42 185 190 [225 220 231 242]
第五趟排序后:41 42 185 190 220 [225 231 242]
第六趟排序后:41 42 185 190 220 225 [231 242]
第七趟排序后:41 42 185 190 220 225 231 242
Pascal代码:
const mx=10000;
var
d:array[1..mx]of longint;
n,i,j,k:longint;
begin
readln(n);
for i:=1 to n do read(d[i]);
for i:=1 to n-1 do
begin
for j:=n-1 downto i do
if d[j+1]<d[j] then
begin //相邻元素交换
k:=d[j]; d[j]:=d[j+1]; d[j+1]:=k;
end;
end;
for i:=1 to n do writeln(d[i]);
End.
创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。
网站名称:排序算法之冒泡排序-创新互联
本文链接:https://www.cdcxhl.com/article48/ccicep.html
成都网站建设公司_创新互联,为您提供网站内链、App设计、软件开发、微信公众号、品牌网站制作、静态网站
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联