字符串排序_字符串从小到大排序算法[通俗易懂]

字符串排序_字符串从小到大排序算法[通俗易懂]1.在主函数中输入10个字符串,用另一个函数排序,在主函数中输出排好序的字符串;用指针数组处理;解:首先要解决一个问题,怎么输入多个字符串?//可以用指针数组保存多个字符串常量;char*str[]={“China”

字符串排序_字符串从小到大排序算法[通俗易懂]"

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://bianchenghao.cn/68994.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注