gpt4 book ai didi

c - C题中的冒泡排序

转载 作者:行者123 更新时间:2023-11-30 15:38:08 25 4
gpt4 key购买 nike

您好,我正在尝试让我的程序将数字按升序排列。

它首先列出您输入的数字(最多 20 个),然后删除所有重复项并列出它们。然后我需要使用冒泡排序将它们按升序列出。谁能帮我完成最后一部分吗?

#include <stdio.h> 

int main (void)

{
setbuf(stdout, NULL);

int nums[20] , i , j, k, swap ;
int count=0;

{
printf("Enter integers. (Negative -1 to stop):\n");
for (i=0; i < 20; i++)
{
scanf("%d", &nums[i]);
count = count +1;

if(nums[i] == -1 )

break;
}
}

printf("The numbers you entered are:\n");
for(i=0;i<count;++i)
{
printf("%d\n", nums[i]);
}
printf("\n Your numbers with the duplicate numbers removed:\n ");

for(i=0;i<count;i++)
{
for(j=i+1;j<count;)
{
if(nums[j]==nums[i])
{
for(k=j;k<count-1;++k)
{
nums[k]=nums[k+1];
}
count--;
}
else
{
j++;
}
}
}

for(i=0;i<count;i++)
printf("%d\n ",nums[i]);

for(i=0; i<(k-1); i++)
{
for(i=0; i < k-j; i++)
{
if (nums[i] > nums[i+1])
{
swap = nums[i];
nums[i] =nums[i+1];
nums[i+1] = swap;
}
}
}

printf("\n Your numbers sorted in to ascending order:\n");

for(j=0;j<i;j++)
printf("%d\n ",nums[i]);

return 0;
}

谢谢!

最佳答案

代码中的冒泡排序是:

for(i=0; i<(k-1); i++)
{
for(i=0; i < k-j; i++)
{
}
if (nums[i] > nums[i+1])
{
swap = nums[i];
nums[i] =nums[i+1];
nums[i+1] = swap;
}
}

假设k是要排序的元素数量,它应该是:

for(i=0; i<(k-1); i++)
{
for(j=0; j < k - 1 - i; j++)
{
if (nums[j] > nums[j+1])
{
swap = nums[j];
nums[j] =nums[j+1];
nums[j+1] = swap;
}
}

您的代码有第二个循环,其主体为空,并且您需要一个与 i 不同的内部循环循环变量,因为这是驱动外部循环。

关于c - C题中的冒泡排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21928386/

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