首页 > 其他分享 >C语言实现字符串排序

C语言实现字符串排序

时间:2024-07-07 11:55:38浏览次数:8  
标签:String temp s2 s1 C语言 字符串 排序 strcmp

如果只有英文字符且不区分大小写的话按照字典序排序可以用strcmp函数,两个字符串自左向右逐个字符相比(按ASCII值大小相比较)

strcmp(s1,s2)

当s1<s2时,返回为负数;

当s1==s2时,返回值= 0;

当s1>s2时,返回正数。

例如"A"<"C" 、"d">"D"、 "computer">"compare"

如果想要不区分大小写的话可以用strcasecmp函数

strcmp("A","a"),返回的是负数,因为a的ACIIS码比A大

strcasecmp("A","a"),返回0,把A和a看成一样的

先定义字符串结构体

typedef struct String{
    char str[1010];
}String;

排序函数实现

void Sort(String s[],int n){    //冒泡排序
    int i,j;
    String temp;
    for(i=0;i<n-1;i++){
        for(j=0;j<n-i-1;j++){
            if(strcmp(s[j].str,s[j+1].str)>0){
                temp=s[j];
                s[j]=s[j+1];
                s[j+1]=temp;
            }
        }
    }
}

主函数调用

scanf("%d",&n);
String* s = (String*)malloc(n*sizeof(String));//动态分配空间
for(i=0;i<n;i++){
    scanf("%s",s[i].str);
}
Sort(s,n);
for(i=0;i<n;i++){    //打印结果
    printf("%s\n",s[i].str);
}
free(s);	//释放内存

 

 

标签:String,temp,s2,s1,C语言,字符串,排序,strcmp
From: https://blog.csdn.net/m0_62574258/article/details/140244074

相关文章

  • 冒泡排序
    冒泡排序#include<iostream>usingnamespacestd;voidbubbleSort(intarr[],intn){ boolflag=false;for(inti=0;i<n-1;i++){//外层循环,控制排序的轮数for(intj=0;j<n-i-1;j++){//内层循环,控制每轮比较的次数i......
  • [数据结构] 基于交换的排序 冒泡排序&&快速排序
    标题:[数据结构]基于交换的排序冒泡排序&&快速排序@水墨不写bug(图片来源于网络) 目录(一)冒泡排序优化后实现:(二)快速排序I、实现方法: (1)hoare法hoare法实现快排: (2)挖坑法挖坑法实现:(3)双指针法 双指针法实现:  II、快速排序复杂度分析:比较完备的快速排序实现如......
  • c++字符串知识总结
    读字符串函数fgets功能:从文件中读取字符串,每次只读取一行。注意:fgets每次最多只能读取n-1个字2.符,第n个为NULL。当遇到换行符或者EOF时,即使当前位置在n-1之前也读出结束。若函数返回成功,则返回字符串数组str的首地址。例:小L很喜欢听私人笑声,可是有些歌曲他没有夹带私人笑......
  • G3.【C语言】EasyX的窗口坐标体系和绘制基本图形
    左上角是坐标原点注意标题栏不计入坐标中getwidth()获取窗口宽度getheight()获取窗口高度画点头文件COLORREFgetpixel(intx,inty); //Getpixelcolorvoidputpixel(intx,inty,COLORREFcolor); //Setpixelcolor画线头文件线的坐标voidline(intx1,......
  • 快速排序的思路及核心函数
    Quick_Sort###思想选取数组段内的任意一个值$x$(可以是左边界值`a[r]`,右边界值`a[l]`,中间值`a[(l+r+1)/2]`)。进行排序,在数组段内,将比$x$小的数都放在$x$的左边,比$x$大的数都放在$x$的右边(双指针)。不断递归处理数组段的左右两段,使得任意一个数的左边都比它小,右边......
  • 力扣第7题:整数反转 字符串函数综合运用(C++)
    给你一个32位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过32位的有符号整数的范围 [−231, 231 −1] ,就返回0。假设环境不允许存储64位整数(有符号或无符号)。示例1:输入:x=123输出:321示例2:输入:x=-123输出:-321示例3:......
  • P1271 选举学生会【排序】
    【模板】排序题目描述将读入的NNN个数从小到大排序后输出。输入格式第一行为一个正整数N......
  • 34. 在排序数组中查找元素的第一个和最后一个位置(中等)
    34.在排序数组中查找元素的第一个和最后一个位置1.题目描述2.详细题解(1)朴素二分查找算法(2)改进二分查找算法3.代码实现3.1Python  方法一:  方法二:  方法三:优化方法二3.2Java1.题目描述题目中转:34.在排序数组中查找元素的第一个和最后一个位置2.详......
  • 字符串分隔
    描述•输入一个字符串,请按长度为8拆分每个输入字符串并进行输出;•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。输入描述:连续输入字符串(每个字符串长度小于等于100)输出描述:依次输出所有分割后的长度为8的新字符串比较笨的一个方法:有更好的建议欢迎......
  • 排序算法(3) 堆排序
    ​堆排序1.算法原理堆排序的原理与部分没听说过该排序方法的同学猜想的不同,它并不是将堆顶元素逐一弹出后压入数组中来得到一个有序的数组。这种方法在初始建堆时需要使用一个数组空间,在得到有序的数组时需要使用另一个数组空间。而堆排序则是在初始数组的基础上直接进......