吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1011|回复: 4
收起左侧

[已解决] 2个结果一致的取余运算写在数组 [ ] 最终数组结果却不同

[复制链接]
ing 发表于 2020-2-7 11:06
本帖最后由 ing 于 2020-2-7 15:19 编辑

while 循环一共会执行 4次,每次变量 w、x 都是一样的
捕获.PNG

捕获2.PNG

捕获3.PNG

捕获4.PNG

然而 temp[(k-1)%len 的写法结果和 temp[(k-1+len)%len 的结果最终却不同??
捕获.PNG

捕获2.PNG



#include<stdio.h>

void insert(int arr[],int temp[],int len)
{
    temp[0] = arr[0];
    int final = 0,first = 0;
    for (int i = 1; i < len; ++i) {
        //比最小元素小
        if (arr[i] < temp[first])
        {
            first = (first - 1 + len) % len;
            temp[first] = arr[i];
        }
        //比最大元素大
        else if (arr[i] > temp[final])
        {
            final = (final + 1 + len) % len;
            temp[final] = arr[i];
        }
        //比最小元素大,比最大元素小
        else
        {
            int k = (final + 1 + len) % len;

            //当插入值比当前值小时,需要移动当前值的位置
//            while (arr[i] < temp[(k-1)%len])
            while (arr[i] < temp[(k-1+len)%len])
            {
                int w = (k-1+len)%len;
                int x = (k-1)%len;

//                temp[(k + len) % len] = temp[(k - 1) % len];
                temp[(k + len) % len] = temp[(k - 1 + len) % len];
                k = (k - 1 + len) % len;
            }
            temp[(k + len) % len] = arr[i];
            final = (final + 1 + len) % len;
        }

    }
    for (int j = 0; j < len; ++j) {
        arr[j] = temp[(first + j) % len];
    }
}

int main(int argc, char* argv[])
{
    int a[8] = {3,1,7,5,2,4,9,6};
    int temp[8];
    insert(a,temp,8);
    for (int i = 0; i < 8; ++i) {
        printf("%d ",a[i]);
    }

    return 0;
}

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

~零度 发表于 2020-2-7 11:30
不知道你写的什么,但是w,x并没有写到数组里
HighBox 发表于 2020-2-7 12:27
整个”块状“移动而不是单个元素移动

免费评分

参与人数 1吾爱币 +1 收起 理由
ing + 1 热心回复!

查看全部评分

我的爱是你 发表于 2020-2-7 12:56
本帖最后由 我的爱是你 于 2020-2-7 14:30 编辑

temp[k - 1% 8]       //    temp[0 - 1% 8]               // temp[-1]    ?
temp[(k - 1+8)% 8]     //   temp[(0 - 1+8)% 8]    //temp[7]   ?
经过调试他俩并不相同 ,在 k=0 时数组就会出问题。
第二种写法更为安全
1.jpg
。。。。。。。。。。。。。。。。
2.jpg

免费评分

参与人数 1热心值 +1 收起 理由
ing + 1 我很赞同!

查看全部评分

我的爱是你 发表于 2020-2-7 13:00
你所谓的结果相同不过是前几次循环罢了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 20:33

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表