为什么选择排序不起作用?

时间:2014-01-21 17:18:00

标签: c

#include <stdio.h>
main()
{
    int arr[5]={44,33,55,22,11};
    int i,j;
    for (i=0;i<=4;i++)
    {
        for (j=i+1;j<=4;j++)
        {
            if (arr[i]>arr[j]);
            {
                int k;
                k=arr[i];
                arr[i]=arr[j];
                arr[j]=k;
            }
        }
    }
    for (i=0;i<=4;i++)
        printf(" %d", arr[i]);
}

该计划的输出为11 22 55 33 44,且应为11 22 33 44 55

我做错了什么?

3 个答案:

答案 0 :(得分:6)

摆脱;声明末尾的if。每次循环都会发生交换,因为它不再是有条件的。你已经实现了一个非常昂贵的“反向”版本。

答案 1 :(得分:1)

semicolon循环后删除if:D

if (arr[i]>arr[j]);

答案 2 :(得分:-1)

#include <stdio.h>

int main(){
    int arr[5]={44,33,55,22,11};
    int i,j;
    for (i=0;i<4;i++){
        for (j=i+1;j<=4;j++){
            if (arr[i]>arr[j]){
                int k;
                k=arr[i];
                arr[i]=arr[j];
                arr[j]=k;
            }
        }
    }
    for (i=0;i<=4;i++)
        printf(" %d", arr[i]);
    return 0;
}