不达鸟来了 发表于 2018-10-9 23:38:52

简单排序求助

#include <stdio.h>
#if(0)
void BubbleSort(int k[],int n)
{
        int i,j,temp;
        for(i=0;i<n-1;i++)
        {
                for(j=i+1;j<n;j++)
                {
                        if(k>k);
                        {
                                temp=k;
                                k=k;
                                k=temp;
                        }
                }
        }

}
#endif
int main()
{
        int k={2,8,9,3,8,4,4,0,4,7};
        int i,j,temp;
        int n=10;//简单的排序,外层循环的每一个元素与内层循环的所有元素比较
        for(i=0;i<n-1;i++) //为啥排出顺序不对呢?
        {
                for(j=i+1;j<n;j++)
                {
                        if(k>k);
                        {
                                temp=k;
                                k=k;
                                k=temp;
                        }
                }
        }
        for(i=0;i<10;i++)
        {
          printf(" %d",k);
        }
        putchar(10);
        return 0;
}

1005204767 发表于 2018-10-9 23:52:13

哈哈原因很简单
      for(j=i+1;j<n;j++)
                {
                        if(k>k);
                        {
                              temp=k;
                              k=k;
                              k=temp;
                        }
                }
这个循环的第三行if 后面你加了个分号,因此if已经结束,后面的语句相当于没有条件的执行,所以你的每次循环都会进行交换

Safoozer 发表于 2018-10-9 23:55:52

你有没有发现你的顺序是什么啊?

claws0n 发表于 2018-10-9 23:57:48

你这个不是冒泡排序
多了一个分号
if(k>k);

Safoozer 发表于 2018-10-10 00:06:41

if 后边去掉 ; (分号)

不达鸟来了 发表于 2018-10-10 21:23:07

大意了
页: [1]
查看完整版本: 简单排序求助