首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >插入排序与冒泡排序的比较

插入排序与冒泡排序的比较
EN

Stack Overflow用户
提问于 2014-06-02 14:54:34
回答 2查看 242关注 0票数 0

然而,我发现冒泡排序的执行速度更快。我的代码如下。

冒泡排序

代码语言:javascript
复制
for(int j = 0; j < a.length - 1; j++){
    for(int i = 0; i < a.length - 1 - j; i++) {
        count++;
        if(a[i] > a[i+1]){
            temp = a[i];
            a[i] = a[i + 1];
            a[i + 1] = temp;
        }
    }
}

插入排序

代码语言:javascript
复制
for(int i = 1; i < a.length; i++){  
    for(int j = i - 1; j >= 0; j-- ){   
        if(a[j] > a[i]) {
            temp = a[j];
            a[j] = a[i];
            a[i] = temp;
        }
    }
}

我将开始和结束时间计算如下。

代码语言:javascript
复制
long startTime = System.currentTimeMillis();
.....your program....
long endTime   = System.currentTimeMillis();
long totalTime = endTime - startTime;
System.out.println(totalTime);

我发现,对于插入排序,10次运行的平均时间是13次,而对于冒泡排序,平均时间是5次。这有什么解释吗?

EN

回答 2

Stack Overflow用户

发布于 2014-06-02 15:14:23

你错误地实现了插入排序。被认为是插入排序的代码甚至没有对数组进行排序;例如,在输入上尝试它

代码语言:javascript
复制
int a[] = {4, 2, 3, 1, 5};

给出输出

代码语言:javascript
复制
[2, 3, 1, 4, 5]

查看演示:http://ideone.com/aFCPft

考虑到代码不工作,计时数据不能告诉我们太多信息。

票数 3
EN

Stack Overflow用户

发布于 2014-06-02 15:03:17

您要对多少个元素进行排序?只是为了确保没有模糊的固定成本,我通常在这些测试中采用类似longint.max元素的方式。此外,如果您排序的元素不够多,则可能是因为某些原因,此时您的CPU正处于繁忙状态。元素越多,错误源的相关性就越小。

但是,是的,听起来很奇怪。也许有一些针对愚蠢循环的编译器优化对优化后的循环无效?

出于好奇,你有没有尝试过32位和64位的应用程序?结果有时可能不同:O

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23988807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档