设为首页 - 加入收藏
广告 1000x90
您的当前位置:黄大仙www78345 > 交换排序 > 正文

给你一个数组用冒泡排序将其按增序排序需要交换几次?

来源:未知 编辑:admin 时间:2019-05-26

  有多组数据,每组数据以一个数字 N 开头(0 N = 1000),接下来一行包含 N 个不重复的正整数。

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  你的想法应该是对的,写一个冒泡程序,中间加一个变量来跟踪交换次数。但是算法好像有问题。

  为什么时间会长,是用动态数组的关系还是其他原因?追答不是,是算法的问题。我们的算法执行时间是冒泡法的执行时间,效率比较低,为O(n*n)。其实可以从一个数组的的逆序对来考虑,每执行一次交换其实是减少了一个逆序对,也就是说有多少个逆序对就执行多少次交换。比如4,3,2,1有六个逆序对分别为(4,3)(4,2),(4,1),(3,2),(3,1)(2,1)。所以冒泡法执行了6次交换。

  用分治法求逆序对的个数可以把时间优化到O(nlgn)。具体的算法你可以看下这里,比较长

本文链接:http://apkhealth.com/jiaohuanpaixu/107.html

相关推荐:

网友评论:

栏目分类

现金彩票 联系QQ:24498872301 邮箱:24498872301@qq.com

Copyright © 2002-2011 DEDECMS. 现金彩票 版权所有 Power by DedeCms

Top