冒泡排序不只排序第一个元素

时间:2018-08-30 05:39:38

标签: bubble-sort

在以下从命令行参数获取输入的代码中,冒泡排序将忽略第一个元素。并对所有其他元素进行排序。谁能帮我吗? cmd行参数输入是否有任何错误?还是按照泡沫排序的逻辑?程序的给定输入为:codeblocks.exe排序9 8 0 1 2 3 4。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(int argc,char *argv[])
{
    int k,i=0,j=0,temp=0;
    k=argc-2;
    int arr[k];
    char s[10];
    if(strcmp(argv[1],"sort")==0)
    {
        printf("The values are\n");
        for(i=0;i<k;i++)
        {
            arr[i]=atoi(argv[2+i]);
        }

        for(i=0;i<k;i++)
        {
            printf("%d\n",arr[i]);
        }
        for(i=0;i<k-1;++i)
        {
            for(j=1;j<k;++j)
            {
                if(arr[i]<arr[j])
                {
                    temp=arr[i];
                    arr[i]=arr[j];
                    arr[j]=temp;
                }
            }
        }

        printf("The sorted array is\n:");
        for(i=0;i<k;i++) 
        {
            printf("%d\n",arr[i]);
        }
    }
    else if(strcmp(argv[1],"rev")==0)
    {
        printf("the string is: %s\n",argv[2]);
        strrev(argv[2]);
        printf("the string is: %s\n",argv[2]);
    }
    else if(strcmp(argv[1],"pal")==0)
    {
        printf("the given string is %s\n",argv[2]);
        strcpy(s,argv[2]);
        strrev(s);
        if(strcmp(argv[2],s)==0)
        {
            printf("Is a palindrome\n");
        }
        else{
            printf("Not a palindrome");
        }
    }
    return 0;
}

0 个答案:

没有答案