开发者社区> 问答> 正文

描述n个数据的冒泡排序算法,时间复杂度是多少

(可使用类pascal或类c语言编写

展开
收起
知与谁同 2018-07-21 18:53:06 3054 0
3 条回答
写回答
取消 提交回答
  • 这个时候,玄酱是不是应该说点什么...
    冒泡排序的算法时间复杂度上O(n^2 )

    冒泡排序是这样实现的:

    首先将所有待排序的数字放入工作列表中。

    从列表的第一个数字到倒数第二个数字,逐个检查:若某一位上的数字大于他的下一位,则将它与它的下一位交换。

    重复2号步骤,直至再也不能交换。

    冒泡排序的平均时间复杂度与插入排序相同,也是平方级的,但也是非常容易实现的算法。
    2019-07-17 22:49:41
    赞同 展开评论 打赏
  • 1.稳定性比较

    插入排序、冒泡排序、二叉树排序、二路归并排序及其他线形排序是稳定的

    选择排序、希尔排序、快速排序、堆排序是不稳定的

    2.时间复杂性比较

    插入排序、冒泡排序、选择排序的时间复杂性为O(n2)

    其它非线形排序的时间复杂性为O(nlog2n)

    线形排序的时间复杂性为O(n);

    3.辅助空间的比较

    线形排序、二路归并排序的辅助空间为O(n),其它排序的辅助空间为O(1);

    4.其它比较

    插入、冒泡排序的速度较慢,但参加排序的序列局部或整体有序时,这种排序能达到较快的速度。

    反而在这种情况下,快速排序反而慢了。

    当n较小时,对稳定性不作要求时宜用选择排序,对稳定性有要求时宜用插入或冒泡排序。

    若待排序的记录的关键字在一个明显有限范围内时,且空间允许是用桶排序。

    当n较大时,关键字元素比较随机,对稳定性没要求宜用快速排序。

    当n较大时,关键字元素可能出现本身是有序的,对稳定性有要求时,空间允许的情况下。

    宜用归并排序。

    当n较大时,关键字元素可能出现本身是有序的,对稳定性没有要求时宜用堆排序。
    2019-07-17 22:49:41
    赞同 展开评论 打赏
  • 社区管理员
    冒泡排序的算法时间复杂度上O(n^2 )

    冒泡排序是这样实现的:

    首先将所有待排序的数字放入工作列表中。

    从列表的第一个数字到倒数第二个数字,逐个检查:若某一位上的数字大于他的下一位,则将它与它的下一位交换。

    重复2号步骤,直至再也不能交换。

    冒泡排序的平均时间复杂度与插入排序相同,也是平方级的,但也是非常容易实现的算法。

    选择排序

    选择排序是这样实现的:

    设数组内存放了n个待排数字,数组下标从1开始,到n结束。

    i=1

    从数组的第i个元素开始到第n个元素,寻找最小的元素。

    将上一步找到的最小元素和第i位元素交换。

    如果i=n-1算法结束,否则回到第3步

    选择排序的平均时间复杂度也是O(n^2)的。
    2019-07-17 22:49:41
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
数据+算法定义新世界 立即下载
袋鼠云基于实时计算的反黄牛算法 立即下载
Alink:基于Apache Flink的算法平台 立即下载