烧伤用什么药最好:冒泡排序的算法分析、改进
来源:百度文库 编辑:偶看新闻 时间:2024/04/28 06:03:14
网站工具
管 理
flash插件下载
晚上好,好好珍惜! 首页 概论 线性表 栈和队列 串 多维数组 广义表 树 图 排序
查找 文件
排序基本概念
基本概念
插入排序
直接插入排序
希尔排序
交换排序
冒泡排序
快速排序
选择排序
直接选择排序
堆排序
归并排序
归并排序
分配排序
箱排序
基数排序
各种内部排序方法
各种内部排序方法的比较和选择
上一页 4、算法分析
(1)算法的最好时间复杂度
若文件的初始状态是正序的,一趟扫描即可完成排序。所需的关键字比较次数C
和记录移动次数M均达到最小值:
Cmin=n-1
Mmin=0。
冒泡排序最好的时间复杂度为O(n)。(2)算法的最坏时间复杂度
若初始文件是反序的,需要进行n-1趟排序。每趟排序要进行n-i次关键字的比较(1
≤i≤n-1)
,且每次比较都必须移动记录三次来达到交换记录位置。在这种情况下,比较和移动次数?
锏阶畲笾担?
Cmax=n(n-1)/2=O(n2)
Mmax=3n(n-1)/2=O(n2)
冒泡排序的最坏时间复杂度为O(n2)。(3)算法的平均时间复杂度为O(n2)
虽然冒泡排序不一定要进行n-1
趟,但由于它的记录移动次数较多,故平均时间性能比直接插入排序要差得多。(4)算法稳定性
冒泡排序是就地排序,且它是稳定的。5、算法改进
上述的冒泡排序还可做如下的改进:
(1)记住最后一次交换发生位置lastExchange的冒泡排序
在每趟扫描中,记住最后一次交换发生的位置lastExchange
,(该位置之前的相邻记录均已有序)。下一趟排序开始时,R[1..lastExchange-1]
是有序区,R[lastExchange..n]
是无序区。这样,一趟排序可能使当前有序区扩充多个记录,从而减少排序的趟数。具体?
惴ā静渭疤狻俊?(2) 改变扫描方向的冒泡排序
①冒泡排序的不对称性
能一趟扫描完成排序的情况:
只有最轻的气泡位于R[n]
的位置,其余的气泡均已排好序,那么也只需一趟扫描就可以完成排序。
【例】对初始关键字序列12,18,42,44,45,67,94,10就仅需一趟扫描。
需要n-1趟扫描完成排序情况:
当只有最重的气泡位于R[1]的位置,其余的气泡均已排好序时,则仍需做n-1
趟扫描才能完成排序。
【例】对初始关键字序列:94,10,12,18,42,44,45,67就需七趟扫描。
②造成不对称性的原因
每趟扫描仅能使最重气泡"下沉"一个位置,因此使位于顶端的最重气泡下沉到底部时?
枳鰊-1趟扫描。 ③改进不对称性的方法
在排序过程中交替改变扫描方向,可改进不对称性。具体算法【参见习题】。 上一页
用JAVA写出冒泡排序的算法
链表的冒泡排序算法
给出一种拓扑排序的改进算法
谁会对C++中的排序算法,比如冒泡排序,插入排序,选择排序,快速排序等的MPI并行实现代码?
请说出Basic语言里的比较非序法、冒泡排序法和选择排序法的算法?
冒泡排序
冒泡排序
冒泡排序
遗传算法的改进
Floyd算法的改进
请问下述算法是属于选择排序还是冒泡排序,有什么依据吗?
vb的冒泡排序法怎么用?
问一个关于冒泡算法的问题
排序。随机生成若干个数据,程序将数据排序后输出,分别使用快速排序,希尔排序,冒泡排序算法进行排序。
dijkstra算法的改进程序
dijkstra算法的改进程序
整数排序算法的问题?
堆排序的具体算法
快速排序的循环算法
求几种排序法的算法
全排序的算法(PASCAL)
冒泡排序法
VB冒泡法排序
急求一个冒泡排序的vb软件~~~