首页 > 试题广场 >

以下哪种排序算法对(1,3,2,4,5,6,7,8,9)进行

[单选题]
以下哪种排序算法对(1,3,2,4,5,6,7,8,9)进行的排序最快()
  • 冒泡
  • 快排
  • 归并
  • 堆排
推荐
题目中应该是改进的冒泡排序。用普通的冒泡排序,时间复杂度还是O(n*n);使用改进的冒泡排序(即在一次冒泡过程中,没有任何元素交换,则结束排序),可以提前结束排序过程。
编辑于 2016-03-23 10:42:20 回复(2)
基本有序,只需遍历一遍即可,设置标志域跳出循环
发表于 2015-09-16 20:10:37 回复(1)
文件初态基本有序时,用直接插入排序,表插入排序,冒泡排序效果最好。
发表于 2015-09-23 17:06:00 回复(0)
若记录的初始状态已经按关键码基本有序,则选用直接插入排序或冒泡排序发为宜
发表于 2016-07-17 09:59:59 回复(1)
void Bubble_1 ( int r[], int n) {  
    int i= n -1;  //初始时,最后位置保持不变  
    while ( i> 0) {  
        int pos= 0; //每趟开始时,无记录交换  
        for (int j= 0; j< i; j++)  
            if (r[j]> r[j+1]) {  
                pos= j; //记录交换的位置  
                int tmp = r[j]; r[j]=r[j+1];r[j+1]=tmp;  
            }  
        i= pos; //为下一趟排序作准备  
     }  
}    
使用改进冒泡算法,速度最快。每趟排序记录下最后一次交换的位置。

发表于 2016-03-25 21:19:06 回复(0)
如果序列有序或者基本有序,则直接插入或者冒泡最简单
发表于 2016-08-09 17:00:32 回复(0)
这个题目没有指明是哪种冒泡排序,如果是普通的冒泡排序复杂度是O(n2),改进过的冒泡排序是O(n)
发表于 2019-04-17 10:28:38 回复(0)
那我如果也用改进的针对基本有序的归并排序,
第一轮:
1 3,   2 4,  5 6, 7 8 9;需要比较1+1+1+2=5次
第二轮:
拿前面最大与后面最小比较则:
1 2 3 4,  5 6 7 8 9;次数3+1=4;
最后一轮1次,则总共比较10次即可.
而用改进的冒泡排序则需要比较8+7 = 15次;
那岂不说明我改的归并排序更快一点.
发表于 2017-02-23 19:32:03 回复(0)
为什么老是说改进后的冒泡排序呢,冒泡不是指的原来的冒泡排序?如果是改进的应该写上才对
发表于 2016-12-11 21:33:33 回复(0)
冒泡一遍扫描即可。有序后跳出循环O(n)
发表于 2017-07-25 13:58:39 回复(0)
萝莉控
发表于 2016-10-31 20:29:13 回复(0)
使用带flag的冒泡,2 与3 交换后即可
发表于 2016-09-09 13:21:11 回复(0)
(1)若n较小(如n≤50),可采用直接插入或直接选择排序。 当记录规模较小时,直接插入排序较好; 否则因为直接选择移动的记录数少于直接插人,应选直接选择排序为宜。

(2)若文件初始状态基本有序(指正序),则应选用直接插人、冒泡或随机的快速排序为宜。

(3)若n较大,则应采用时间复杂度为O(nlgn)的排序方法:快速排序、堆排序或归并排序。快速排序是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机分布时,快速排序的平均时间最短;堆排序所需的辅助空间少于快速排序,并且不会出现快速排序可能出现的最坏情况。这两种排序都是不稳定的。若要求排序稳定,则可选用归并排序。但本章介绍的从单个记录起进行两两归并的  排序算法并不值得提倡,通常可以将它和直接插入排序结合在一起使用。先利用直接插入排序求得较长的有序子文件,然后再两两归并之。因为直接插入排序是稳定 的,所以改进后的归并排序仍是稳定的。
发表于 2016-08-16 18:09:58 回复(0)
严格来说应该是改进的冒泡排序最快。
发表于 2016-02-12 13:07:36 回复(0)
基本有序,可使用插入排序和冒泡排序。
发表于 2015-09-23 00:20:43 回复(0)
对于一个有序的序列,用归并的效率是很快的。。。但是 答案是是粗哦了
发表于 2015-09-20 22:12:45 回复(2)
说是升序了嘛? 我要是需要的是降序呢,什么破题
发表于 2015-09-18 15:49:56 回复(1)
快速排序的平均时间复杂度为O(nlogn),最坏情况为O(n^2);
堆排序以及归并排序的平均、最坏及最好的时间复杂度均为O(nlogn);
(1,3,2,4,5,6,7,8,9)基本已经有顺序了,可以采用冒泡排序的优化算法,仅需要到 i=2即可。
发表于 2015-09-16 16:09:00 回复(0)
冒泡一遍扫描即可。有序后跳出循环O(n)
发表于 2015-09-15 22:21:09 回复(0)