请问描述中的排序叫什么名字。

发布于 2022-09-02 11:18:24 字数 326 浏览 20 评论 0

int[] array = { 4, 7, 1, 5, 2, 6 };
for (int i = 0; i < array.length; i++)
{
    for (int j = i; j > 0 && array[j - 1] > array[j]; j--)
    {
        array[j] = array[j - 1] + array[j];
        array[j - 1] = array[j] - array[j - 1];
        array[j] = array[j] - array[j - 1];
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

没︽人懂的悲伤 2022-09-09 11:18:25

插入排序。第二层循环内部是交换值的意思

皇甫轩 2022-09-09 11:18:25

插入排序,第二层循环里面那段代码,看着估计有点乱,但简化一下看就相当于:

a = a + b;
b = a – b;

a = a – b;
*就是a和b的值交换的意思,看不明白可以代入具体数字去看看。

染柒℉ 2022-09-09 11:18:24

插入排序,上面的交换是不用中间变量,但是也存在一个问题,会存在可能溢出的情况,因为a=a+b可能导致溢出,另外一种不用中间变量的方式是采用异或:a=a^b ,b=a^b,a=a^b 这种方式不适合于浮点数,总之,只是采用了不用任何额外的空间实现交换数据而已。。。重点还是在算法本身。。

嗳卜坏 2022-09-09 11:18:24

嵌套循环是插入排序的写法,但是内层循环体却跟插入排序不一样。

风吹雨成花 2022-09-09 11:18:24

插入排序,第二层循环就是如果array[j-1]>array[j],交换array[j]和array[j-1]的值

痞味浪人 2022-09-09 11:18:24

插入排序

array[j] = array[j - 1] + array[j];
array[j - 1] = array[j] - array[j - 1];
array[j] = array[j] - array[j - 1];

这段代码就是交换的意思,不用中间变量

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文