题解 | #字符串排序#
字符串排序
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;
}