注册 登录
编程论坛 C语言论坛

关于冒泡排序的疑惑,不知道哪里出了问题,求解

hanserisgood 发布于 2022-09-09 17:15, 909 次点击
#include<stdio.h>        //冒泡排序升序示例

void bubble(int*arr,int size);        

int main(void)
{
    int num,m;
    int arr[10] = {9,8,6,4,2,3,0,1,5,7};
    printf("排序前如下\n");
    num = sizeof(arr)/sizeof(arr[0]);
   for(int m=0;m<num;m++)
   printf("%d",arr[m]);
    printf("\n");
    printf("排序后的元素如下\n");
    bubble(arr,num);
   for(int m=0;m<num;m++)
   printf("%d",arr[m])
    return 0;
}
void bubble(int*arr,int size)     
{
    int i,j,temp;
    for(i=0;i<num-1;i++)
    {
        for(j=0;j<num-1-i;num++)
        {
            if(arr[j]>arr[j+1])
            {
                temp=arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=temp;
            }
        }
        
    }
}
2 回复
#2
不会游泳的虾2022-09-09 17:33
for(j=0;j<num-1-i;num++)这句错误了,应为: for(j=0;j<num-1-i;j++) ,仔细一看,还有错误,排序函数修改如下:
程序代码:
void bubble(int* arr, int size)
{
    int i, j, temp;
    for (i = 0; i < size - 1; i++) //for (i = 0; i < num - 1; i++)
    {
        for (j = 0; j < size - 1 - i; j++) //for (j = 0; j < num - 1 - i; num++)
        {
            if (arr[j] > arr[j + 1])
            {
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }

    }
}


[此贴子已经被作者于2022-9-9 17:35编辑过]

#3
hanserisgood2022-09-09 23:10
回复 2楼 不会游泳的虾
太感谢了,是我在改的时候弄错了,当局者迷了属于是...
1