• C字符串排序


    排序算法一般都是针对于数字进行排序,那char类型是否能排序呢?
    试一下。

    #include<stdio.h>
    #include <stdlib.h>
    void compare(char str[100],int length)
    {
        int change=5;
        for(int i=0;i<length;i++)
        {
            for(int j=0;j<length;j++)
            {
                //if(str[i]==str[j])
                //{
                //str[i]='\0';
                //continue;
                //}
                if(str[i]>str[j])
                {
                change=str[j];
                str[j]=str[i];
                str[i]=change;
                }
            }
        }
    }
    
    void main()
    {
        char a[]="fherweufashjewadfa";
        char b[]="uiorewgfagipobagbi";
        compare(a,sizeof(a));
        compare(b,sizeof(a));
        printf("%s\n",a);
        printf("%s\n",b);
        int d=0;
        scanf("%d",d);
    }

    排序结果是从大到小排序,而且中间变量也是可以用int类型的,然后进行比较,但是引发了一个问题,我想从小到大排序,然后输出,

    #include<stdio.h>
    #include <stdlib.h>
    void compare(char str[100],int length)
    {
        int change=5;
        for(int i=0;i<length;i++)
        {
            for(int j=0;j<length;j++)
            {
                //if(str[i]==str[j])
                //{
                //str[i]='\0';
                //continue;
                //}
                if(str[i]<str[j])
                {
                change=str[j];
                str[j]=str[i];
                str[i]=change;
                }
            }
        }
    }
    
    void main()
    {
        char a[]="fherweufashjewadfa";
        char b[]="uiorewgfagipobagbi";
        compare(a,sizeof(a));
        compare(b,sizeof(a));
        printf("%s\n",a);
        printf("%s\n",b);
        int d=0;
        scanf("%d",d);
    }

    空的,荡漾了,为什么呢?

    跟踪一下。

    先看看参数void compare(char str[100],int length)一个数组+一个数组的长度,
    参数应该不会有什么问题,
    然后到最后,'\0'竟然也进入循环,而且一直循环,然后悲剧了,全部替换成了'\0',也就字符串全部没有了。

    //if(str[i]==str[j])
                //{
                //str[i]='\0';
                //continue;
                //}

    这段注释的代码是可以去除重复元素,我这个程序原本目的是,为了拼接两个字符串,拼接后要从大到小排序。

    而且 还有个很蛋疼的事情,当你要从小到大排序时候,你还不能用这种方式进行排除,荡漾了

  • 相关阅读:
    AssemblyInfo.cs文件:包含程序版本、信息、版权的属性文件(转转转)
    简单日志
    Log4net 日志使用指南
    enter 键 触发搜索按钮
    给<a>标签增加href属性 ~~~ 转转
    最经典介绍ASP.NET抽象工厂模式概念及用法 ~~~转转转转
    sql server 中 like 中文不匹配问题解决就这么简单
    MySQL数据库like查询中文出现不准确的解决方法
    Unity属性(Attributes)
    拓展自定义编辑器窗口(EditorGUILayout类)
  • 原文地址:https://www.cnblogs.com/fish124423/p/2616696.html
Copyright © 2020-2023  润新知