字符串排序

1.在主函数中输入10个字符串,用另一个函数排序,在主函数中输出排好序的字符串;用指针数组处理;
解:首先要解决一个问题,怎么输入多个字符串?

//可以用指针数组保存多个字符串常量;
 char *str[] = {"China","Japan","America",
            "Korea","England","Germany",
     "France","Russia","Singapore","Malaysia"};
     //指针数组,其中的每一个元素都是指针,指向10个字符串常量的首地址;
    //指针数组保存10个字符串常量的首地址;通过str[下标]可以输出字符串常量;

第二个要解决的问题是怎么交换两个字符串常量?

//交换两个字符串常量,通过交换指针指向的地址来交换两个字符串常量;
 const char *str1 = "haha";
 const char *str2 = "nihao";
 printf("%s,%s\n",str1,str2);
 const char *tmp = str1;
 str1 = str2;
 str2 = tmp;
 printf("%s,%s\n",str1,str2);

第三个问题,怎么传递指针数组的参数?指针数组的形参是一个二级指针;
字符串排序用strcmp函数比较字符串的大小。

void StrSort(char **str,int len)//指针数组的形参是一个二级指针;
{
 char *tmp;
 int i;
 for(i=0;i<len-1;i++)
 {
  for(int j=0;j+1<len-i;j++)
  {
   if(strcmp(str[j],str[j+1])>0)
   {
    tmp=str[j];
    str[j]=str[j+1];
   str[j+1]=tmp;
   }
  }
 }

字符串排序的代码跟冒泡排序十分类似;可以类比一下;

冒泡排序:
冒泡排序(从小到大):两两比较,小的放前面,大的放后面;
第一趟(假设有n个数):比较n-1趟;
第二趟:比较n-2趟;
第n-1趟:比较n-(n-1)=1趟;

void BubbleSort(int *arr,int len)
{
 int tmp;
 for(int i=0;i<len-1;i++)
 {
  for(int j=0;j+1<len-i;j++)
  {
   if(arr[j] > arr[j+1])
   {
    tmp = arr[j];
    arr[j] = arr[j+1];
    arr[j+1] = tmp;
   }
  }
 }
}

    原文作者:巨星_
    原文地址: https://blog.csdn.net/weixin_45398930/article/details/102712470
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞