首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >插入排序代码复核

插入排序代码复核
EN

Stack Overflow用户
提问于 2018-06-29 06:46:39
回答 2查看 136关注 0票数 1

这是我的插入排序代码。这段代码可以工作,但是这是编写插入排序的方式吗?我看过很少的教程,但他们以不同的方式来做。

代码语言:javascript
复制
int thirdArray[] = { 0, 22, 1, 10, 8, 5,39 };
for (int i = 0; i < thirdArray.length - 1; i++) {
    for (int j = i + 1; j > 0; j--) {
        if (thirdArray[j] < thirdArray[j - 1]) {
            int index = thirdArray[j];
            thirdArray[j] = thirdArray[j - 1];
            thirdArray[j - 1] = index;
        }
    }
}
for (int number : thirdArray) {
    System.out.print(number + "\t");
}
EN

回答 2

Stack Overflow用户

发布于 2018-06-29 08:50:34

在Java7中,现在做排序是如此简单。

代码语言:javascript
复制
  Arrays.sort(thirdArray);

这将对已排序的数组元素进行排序。

票数 0
EN

Stack Overflow用户

发布于 2019-05-05 02:29:46

在您的代码中,您为交换操作占用了额外的空间。然而,这是一种有效的方法,但您可以通过以下方式对其进行优化

代码语言:javascript
复制
    int thirdArray[] = { 0, 22, 1, 10, 8, 5,39 };
    int key,j;
    for(int i = 1 ; i < thirdArray.length ; i++)
    {
        key = thirdArray[i];
        j = i - 1;

        while(j >=0 && key < thirdArray[j])
        {
            thirdArray[j+1] = thirdArray[j];
            j--;
        }
        arr[j+1] = key;
    }
}

在上面的代码中,您从第一个索引开始与它的前一个索引进行比较,如果它较小,则覆盖它的值(您已经将当前值保存在key中),最后将它放在正确的位置。我们可以保证在排序之后,左边的所有元素都是排序的。插入排序具有最坏情况的性能:О(n^2)最佳情况的性能: O(n)。通过交换,我们增加了更多的复杂性,你可以避免它。

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

https://stackoverflow.com/questions/51092116

复制
相关文章

相似问题

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