ITPub博客

首页 > 应用开发 > IT综合 > 冒泡排序算法(转载)

冒泡排序算法(转载)

原创 IT综合 作者:chinaco 时间:2009-07-06 16:21:15 0 删除 编辑

将被排序的记录数组R[1..n]垂直排列,每个记录R[i]看作是重量为R[i].key的气泡。根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R:凡扫描到违反本原则的轻气泡,就使其向上"飘浮"(冒泡因此得名)。如此反复进行,直到最后任何两个气泡都是轻者在上,重者在下为止。

冒泡算法小结:

  因为每一趟排序都使有序区增加了一个气泡,在经过n-1趟排序之后,有序区中就有n-1个气泡,而无序区中气泡的重量总是大于等于有序区中气泡的重量,所以整个冒泡排序过程至多需要进行n-1趟排序。若在某一趟排序中未发现气泡位置的交换,则说明待排序的无序区中所有气泡均满足轻者在上,重者在下的原则,因此,冒泡排序过程可在此趟排序后终止。为此,在下面给出的算法中,引入一个布尔量flag,在每趟排序开始前,先将其置为false,若排序过程中发生了交换,则将其置为true.各趟排序结束时检查flag,若未曾发生过交换则终止算法,不再进行下一趟排序。(不加flag也可以实现排序,但是会造成不必要的循环和比较)。

[@more@]

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/7223998/viewspace-1023840/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    5
  • 访问量
    25882