首页 > 其他分享 >7-5 字符串排序

7-5 字符串排序

时间:2023-11-16 23:55:52浏览次数:106  
标签:sort 81 int char 字符串 排序

目录

目录

题目

本题要求编写程序,读入5个字符串,按由小到大的顺序输出。

输入格式:
输入为由空格分隔的5个非空字符串,每个字符串不包括空格、制表符、换行符等空白字符,长度小于80

输出格式:
按照以下格式输出排序后的结果:

After sorted:
每行一个字符串

输入样例:
red yellow blue black white
输出样例:

After sorted:
black
blue
red
white
yellow

代码

思路

本题算法较为简单,

  1. 按题意输入5个字符串
  2. 排序

所以,可以用char a[5][81]来存储5个字符串,并用选择法排序对字符串进行排序。
本题难点在于对字符串数组的运用。

第一次错误尝试

#include<stdio.h>
void sort( int a[], int n );
int main()
{
    char a[5][81];
    for(int i=0;i<5;;i++)
        scanf("%s",&a[i]);
    sort(a,5);
   printf("After sorted:\n");
    for(int i=0;i<5;i++)
    {
        printf("%s\n",a[i]);
    }
    
    return 0;
}
void sort( int a[], int n )
{
    int k;//最小值下标
    for(int i=0;i<n-1;i++)//第一个未排序元素的下标
    {
        k=i;
        for(int j=i+1;j<n;j++)//在未排序元素中遍历找出最小值
        {
            if(a[k]>a[j])
            {
                k=j;
            }
        }
        //已找到未排序元素中的最小值a[k]
        //和第一个未排序的元素交换位置
        if(k!=i)
        {
            int min=a[k];
            a[k]=a[i];
            a[i]=min;
        }
    }
}
错误原因

很显然,封号不小心用成了中文模式,且sort函数对二维数组的引用是错误的;
2.

for循环不小心多了一个封号,字符串输入漏掉了一个参数81

  1. sort函数直接复制了之前对int型一维数组的代码,与字符串数组不适配。

正确代码

#include<stdio.h>
#include<string.h>
void sort(char a[][81], int n);

int main()
{
    char a[5][81];
    for (int i = 0; i < 5; i++)
        scanf("%s", a[i],81);
    sort(a, 5);
    printf("After sorted:\n");
    for (int i = 0; i < 5; i++)
    {
        printf("%s\n", a[i]);
    }

    return 0;
}
void sort(char a[][81], int n)
{
    int k;//最小值下标
    for (int i = 0; i < n - 1; i++)//第一个未排序元素的下标
    {
        k = i;
        for (int j = i + 1; j < n; j++)//在未排序元素中遍历找出最小值
        {
            if (strcmp(a[k], a[j]) > 0)
            {
                k = j;
            }
        }
        //已找到未排序元素中的最小值a[k]
        //和第一个未排序的元素交换位置
        if (k != i)
        {
            char min[1][80];
            strcpy(min[0], a[k]);
            strcpy(a[k], a[i]);
            strcpy(a[i], min[0]);
        }
    }
}
运行结果


关于二维数组的函数引用

标签:sort,81,int,char,字符串,排序
From: https://www.cnblogs.com/wa2211lq/p/17837563.html

相关文章

  • 字符串哈希算法
    一、字符串哈希:将一串字符串映射成一个整数,并用它来代替字符串进行比较。这样俩个字符串的比较就变成俩个整数的比较,可以将时间复杂度减少至O(1)二、哈希函数:为了将字符串转化为整数,需要一个哈希函数hash,使得以下条件成立:如果字符串s==t那么hash(s)==hash(t)。一般情况下采......
  • 求删除k个字母后的最小字典序字符串
    对于一个字符串来说我们要找删除k个字母后的最小字典序字符串来说,我们肯定是从前往后来删除,如果遇见前一个字母比后一个字母(字典序)大,那就删除前一个。对于此来说我们用一个vector来维护,vector就是存的答案,如果vector的最后一个字母比枚举的字母大,那就删除最后一个。vector<c......
  • 找出一个字符串中出现次数最多的一个字符 找出重复签到的同学
    7-2找出一个字符串中出现次数最多的一个字符找出一个字符串中出现次数最多的一个字符。输入格式:给出一个字符串,字符串的长度不大于10^6,不区分大小写,字符串中可能包含'A'-'Z','a'-'z',''字符。输出格式:分别输出出现最多次数的字符(如果为字母,输出小写字母),出现的次数,用......
  • 344. 反转字符串
    2023-11-16344.反转字符串-力扣(LeetCode)思路:        //栈    //头插链表    //o1 双指针双指针:classSolution{publicvoidreverseString(char[]s){//栈//头插链表//o1双指针inti=0;......
  • 手写快速排序
    什么是快速排序快速排序的基本思想:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。算法描述和实现快速排序使用分治法来把一个串(list)分为两个子串(sub-lists)。具体算法描述如下......
  • Qlik 中对时间正确排序
    Max(TimeStamp(time(frac(Timefield),'hh:mm:ss'))假设日期时间格式为2023/11/1609:03:00,frac()先提取Timefiled的小数部分,也就是09:03:00,接着time()函数会转换成时间,TimeStamp()按照'hh:mm:ss'格式化,最后Max()取最大值。......
  • [左神面试指南] 字符串[上]篇
    CD95判断两个字符串是否互为变形词/*模拟*/publicclassCD95_1{publicstaticbooleansolution(Strings1,Strings2){if(s1.length()!=s2.length())returnfalse;int[]temp=newint[256];for(charch:s1.toCharArray())......
  • 判断一个字符串中出现次数最多的字符,统计这个次数
    varstr="stiabsstringapbs";varobj={};for(vari=0;i<str.length;i++){varkey=str[i];if(!obj[key]){obj[key]=1;}else{obj[key]++;......
  • setTimeout可以将字符串当成代码执行,类比eval函数。当遇到setTimeout或者SetInterval,
    请问以下JS代码的输出顺序是?letdate=newDate()setTimeout(()=>{console.log('1')},2000)setTimeout('console.log(2)',1000);setTimeout(function(){console.log('3')},1500);while((newDate()-date)<3000){}A报错B......
  • Java字符串、字符与数字之间的相互转换
    一、数字转字符串//将整个数字转化为字符串inti=456;//方法一Stringstr1=Integer.toString(i);System.out.println(str1);//方法二Stringstr2=i+"";System.out.println(str2)二、字符串转数字//整数方法一Stringstr="123";intnum1=Integer.parseInt(str);/......