VC毕业设计_多种排序算法动态演示软件的设计和开发
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
密 惠 保
冒泡排序算法的基本思想:冒泡法的原理很简单,基本思想就是比较相临的两个记录的关键字,若前者比后者小则交换,若前者比后者大则保持不变。先将第一个记录与第二个记录比较,然后是第二个与第三个比较,直到倒数第二个与最后一个记录。比较一轮结束之后,关键字大的记录均向前移动。然后开始新一轮的比较,知道一轮比较下来,不再有记录的交换发生为止。整个过程就有点象水中的气泡上升的过程,轻的往上浮,重的向下沉,这个算法的名字也就由此得来。算法的步骤如下: think58好,好think58
[资料来源:THINK58.com]
(1)假设要排序的数列为A[1]……A[N],我们把相邻的两个数两两进行比较。即把A[1]和A[2]比较,对比完后把A[2]和A[3]进行比较,……直到A[N-1]和A[N]比较完为止。在相邻的两个数两两进行比较的过程中,如果前面的一个数比后面一个数大,则把这两邻的两个数交换,也就是说,我们把较小的数放在前面,把较大的数调到后面。即,如果在一次比较中,如果A[1]比A[2]大的情况下,把A[1]和A[2]交换,……以此类推,直到一轮A[N-1]和A[N]比较完。 copyright think58
[来源:http://think58.com]
(2)再次重复(1),直到相邻两数之间不再发生交换为止。 think58
例如:一组待排序数列为:
think58好,好think58
6 内容来自think58
8 copyright think58 [来源:http://think58.com]
5
[资料来源:http://think58.com]
4 think58 [版权所有:http://think58.com]
9 [资料来源:www.THINK58.com]
7
think58 [版权所有:http://think58.com]
[来源:http://think58.com]
图3-1 待排序组 [版权所有:http://think58.com]
根据算法思路(1)第一次对比后无变化; think58好,好think58
根据算法思路(1)第二次对比发生变化:由于A[2]=8 > A[3]=5,所以两者交换
本文来自think58
[资料来源:http://think58.com]
6
[来源:http://think58.com]
5
think58.com [资料来源:THINK58.com]
[资料来源:http://www.THINK58.com]
8
本文来自think58 [来源:http://www.think58.com]
[资料来源:THINK58.com]4 copyright think58
9
think58 [来源:http://think58.com]
[资料来源:http://THINK58.com]7 think58好,好think58
图3-2 第一次交换 think58.com [资料来源:http://www.THINK58.com]
根据算法思路(1)第三次对比发生变化:由于A[3]=8 > A[4]=4,所以两者交换 think58好,好think58 [资料来源:http://think58.com]
copyright think58
6 think58好,好think58 [版权所有:http://think58.com]
5 think58好,好think58 [资料来源:www.THINK58.com]
4 think58.com
8
think58好,好think58 [来源:http://www.think58.com]
[资料来源:http://THINK58.com]
9
think58.com [版权所有:http://think58.com]
7
[资料来源:http://THINK58.com]
图3-3第二次交换 本文来自think58 [来源:http://think58.com]
根据算法思路(1)第四次对比无变化; 本文来自think58 [资料来源:http://THINK58.com]
根据算法思路(1)第五次对比发生变化:由于A[5]=9 > A[6]=7,所有两者交换
本文来自think58 [资料来源:www.THINK58.com]
[来源:http://think58.com]6
内容来自think58 [来源:http://www.think58.com]
5 copyright think58 [资料来源:www.THINK58.com]
4
8
内容来自think58
7
[来源:http://think58.com]
9 内容来自think58 [资料来源:http://www.THINK58.com]
图3-4第三次交换 think58
到此第一轮的排序结束,根据算法思路(2),重新对以交换排列后的数列进行排序直到没有变化为止,生成最后的序列: 本文来自think58 [资料来源:http://think58.com]
4 think58.com [资料来源:http://www.THINK58.com]
5 think58.com [版权所有:http://think58.com]
6
本文来自think58 [资料来源:THINK58.com]
[资料来源:http://think58.com]7
本文来自think58 [资料来源:http://THINK58.com]
[资料来源:http://www.THINK58.com]
8 copyright think58 [版权所有:http://think58.com]
9 本文来自think58
[版权所有:http://think58.com]
图3-5最后有序序列
think58
[资料来源:http://www.THINK58.com]
分析冒泡排序法的效率,若记录一开始就是从大到小排列,则一次循环就能完成排序;若记录是“逆序”排列的,即是冲小到大的排列,则需n-1次循环(n为需要排序的记录总数),共n(n-1)/2次比较和交换。算法的负责度为O(n ×n).
think58 [资料来源:http://think58.com]