冒泡排序法Bubble Sorting

冒泡排序法(Bubble Sorting)是一种交换排序方法

基本思想:
每次仅进行相邻两个元素的比较,若为逆序(a(i)>a(i+1)),则将两个元素交换。

排序过程:
先将第一个元素和第二个元素进行比较,若为逆序,则交换之;接着比较第二个和第三个元素;依此类推,直到第n-1个元素和第n个元素进行比较、交换为止。如此经过一趟排序,使最大的元素被安置到最后一个元素的位置上。然后,对前n-1个元素进行同样的操作,使次大的元素被安置到第n-1个元素的位置上。重复以上过程,直到没有元素需要交换为止。

举例说明:

原始待排序数组【7 | 3 | 1 | 2 | 6 | 0】

从小到大排序

第一趟排序(外循环)
第一次两两比较 7>3 交换(内循环)
交换前状态【7 | 3】| 1 | 2 | 6 | 0 |
交换后状态【3 | 7】| 1 | 2 | 6 | 0 |

第二次两两比较 7>1 交换(内循环)
交换前状态 | 3 |【7 | 1】| 2 | 6 | 0 |
交换后状态 | 3 |【1 | 7】| 2 | 6 | 0 |

第三次两两比较 7>2 交换(内循环)
交换前状态 | 3 | 1 |【7 | 2】| 6 | 0 |
交换后状态 | 3 | 1 |【2 | 7】| 6 | 0 |

第四次两两比较 7>6 交换(内循环)
交换前状态 | 3 | 1 | 2 |【7 | 6】| 0 |
交换后状态 | 3 | 1 | 2 |【6 | 7】| 0 |

第五次两两比较 7>0 交换(内循环)
交换前状态 | 3 | 1 | 2 | 6 |【7 | 0】
交换后状态 | 3 | 1 | 2 | 6 |【0 | 7】

第二趟排序(外循环)
第一次两两比较 3>1 交换(内循环)
交换前状态【3 | 1】| 2 | 6 | 0 | 7 |
交换后状态【1 | 3】| 2 | 6 | 0 | 7 |

第二次两两比较 3>2 交换(内循环)
交换前状态 | 1 |【3 | 2】| 6 | 0 | 7 |
交换后状态 | 1 |【2 | 3】| 6 | 0 | 7 |

第三次两两比较 3<6 不交换(内循环)
交换前状态 | 1 | 2 |【3 | 6】| 0 | 7 |
交换后状态 | 1 | 2 |【3 | 6】| 0 | 7 |

第四次两两比较 6>0 交换(内循环)
交换前状态 | 1 | 2 | 3 |【6 | 0】| 7 |
交换后状态 | 1 | 2 | 3 |【0 | 6】| 7 |

第五次两两比较 6<7 不交换(内循环)
交换前状态 | 1 | 2 | 3 | 0 |【6 | 7】
交换后状态 | 1 | 2 | 3 | 0 |【6 | 7】

第三趟排序(外循环)
第一次两两比较 1<2 不交换(内循环)
交换前状态【1 | 2】| 3 | 0 | 6 | 7 |
交换后状态【1 | 2】| 3 | 0 | 6 | 7 |

第二次两两比较 2<3 不交换(内循环)
交换前状态 | 1 |【2 | 3】| 0 | 6 | 7 |
交换后状态 | 1 |【2 | 3】| 0 | 6 | 7 |

第三次两两比较 3>0 交换(内循环)
交换前状态 | 1 | 2 |【3 | 0】| 6 | 7 |
交换后状态 | 1 | 2 |【0 | 3】| 6 | 7 |

第四次两两比较 3<6 不交换(内循环)
交换前状态 | 1 | 2 | 0 |【3 | 6】| 7 |
交换后状态 | 1 | 2 | 0 |【3 | 6】| 7 |

第五次两两比较 6<7 不交换(内循环)
交换前状态 | 1 | 2 | 0 | 3 |【6 | 7】
交换后状态 | 1 | 2 | 0 | 3 |【6 | 7】

第四趟排序
第一次两两比较 1<2 不交换(内循环)
交换前状态【1 | 2】| 0 | 3 | 6 | 7 |
交换后状态【1 | 2】| 0 | 3 | 6 | 7 |

第二次两两比较 2>0 交换(内循环)
交换前状态 | 1 |【2 | 0】| 3 | 6 | 7 |
交换后状态 | 1 |【0 | 2】| 3 | 6 | 7 |

第三次两两比较 2<3 不交换(内循环)
交换前状态 | 1 | 0 |【2 | 3】| 6 | 7 |
交换后状态 | 1 | 0 |【2 | 3】| 6 | 7 |

第四次两两比较 3<6 不交换(内循环)
交换前状态 | 1 | 0 | 2 |【3 | 6】| 7 |
交换后状态 | 1 | 0 | 2 |【3 | 6】| 7 |

第五次两两比较 6<7 不交换(内循环)
交换前状态 | 1 | 0 | 2 | 3 |【6 | 7】
交换后状态 | 1 | 0 | 2 | 3 |【6 | 7】

第五趟排序
第一次两两比较 1>0 交换(内循环)
交换前状态【1 | 0】| 2 | 3 | 6 | 7 |
交换后状态【0 | 1】| 2 | 3 | 6 | 7 |

第二次两两比较 1<2 不交换(内循环)
交换前状态 | 0 |【1 | 2】| 3 | 6 | 7 |
交换后状态 | 0 |【1 | 2】| 3 | 6 | 7 |

第三次两两比较 2<3 不交换(内循环)
交换前状态 | 0 | 1 |【2 | 3】| 6 | 7 |
交换后状态 | 0 | 1 |【2 | 3】| 6 | 7 |

第四次两两比较 3<6 不交换(内循环)
交换前状态 | 0 | 1 | 2 |【3 | 6】| 7 |
交换后状态 | 0 | 1 | 2 |【3 | 6】| 7 |

第五次两两比较 6<7 不交换(内循环)
交换前状态 | 0 | 1 | 2 | 3 |【6 | 7】
交换后状态 | 0 | 1 | 2 | 3 |【6 | 7】

以上就是数组【7 | 3 | 1 | 2 | 6 | 0】冒泡排序的全过程

排序完毕,输出最终结果 【0 | 1 | 2 | 3 | 6 | 7】

代码仅供参考:

核心代码

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As Dat...