题解 | #字符串排序#

字符串排序

http://www.nowcoder.com/practice/5af18ba2eb45443aa91a11e848aa6723

#include<stdio.h>
int main(){
    int i=0,j=0;
    int n,flag=0;  
    char tmp[101];
    scanf("%d",&n);
    char arr[n][101];
    for(i=0;i<n;i++)
    {
        scanf("%s",arr[i]);       
    }
    //冒泡排序,从第一个比较到刚排好的一个
    for(j=n-1;j>=1;j--)
    {
        //未交换则flag=0
        flag=0;
        for(i=1;i<=j;i++)
        {
            //strcmp(s1,s2)比较两个字符串,自左向右逐个字符按ASCII值大小相比较,知道出现不同字符或遇到\0为止。
            //若s1>s2,则结果>0
            //若s1<s2,则结果<0
            //若s1=s2,则结果=0
            
            //比较相邻两个字符串,采用冒泡排序
            if(strcmp(arr[i-1],arr[i])>0)
            {
                //交换位置
                //tmp中间变量
                strcpy(tmp,arr[i-1]);
                strcpy(arr[i-1],arr[i]);
                strcpy(arr[i],tmp);
                flag=1;
                
            }
        }
        //从i=1比较到刚排好的一个发现两两都有序,即已经排好序,则退出
        if(flag == 0)
        {
            break;
        }
    }

    for(i=0;i<n;i++){
        printf("%s\n",arr[i]);
    }
    
    return 0;
}
全部评论

相关推荐

shtdbb_:还不错,没有让你做了笔试再挂你
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务