gpt4 book ai didi

C-插入排序

转载 作者:行者123 更新时间:2023-11-30 21:09:13 25 4
gpt4 key购买 nike

这段代码有什么问题? while 循环部分不起作用。 if 语句不足以终止 while 循环

int main(void) {

int data[SIZE] = { 12,2,5,8,2,45,89,0,12,4 };

int i, j, tmp;

for (i = 0; i < SIZE-1; i++) {
j = i + 1;
tmp = data[j];
while (j > 0){
if(data[j-1] > tmp){
data[j] = data[j - 1];
j--;
}
}
data[j] = tmp;
}

for (i = 0; i < SIZE; i++)
printf("%d, ", data[i]);

return 0;
}

最佳答案

j--; 位于 if 语句内。如果 data[j-1] > tmpfalse 你的循环将不会终止。除此之外,您的算法不会对数组进行排序。像这样调整您的代码:

int main (void)
{
int data[SIZE] = { 12,2,5,8,2,45,89,0,12,4 };

int i, j, tmp;

for (i = 0 ; i < SIZE - 1; i++)
{
j = i+1;
while ( j > 0 && data[j] < data[j-1])
{
tmp = data[j];
data[j] = data[j-1];
data[j-1] = tmp;
j--;
}
}

for (i = 0; i < SIZE; i++) {
printf("%d, ", data[i]);
}
return 0;
}

关于C-插入排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35275621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com