• c#:对两个字符串大小比较(不使用c#/java内部的比较函数),按升序排序


    题目:首先需要实现一个函数:两个字符串大小比较(不得使用c#/java系统函数)的自定义函数;之后对一个字符串数据进行按升序排序(在排序过程中使用字符串大小比较时,使用自定义的字符串大小比较函数)。

    以下是对一个字符串数据进行按升序排序我个人想到的实现方案:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace Demo
    {
        class Program
        {
            /**
             * 对两个字符串大小比较(不使用c#/java内部的比较函数),按升序排序
             */
            static void Main(string[] args)
            {
                string[] strArr = new string[] { "a", "a2", "bc", "a1" };
    
                for (int i = 0; i < strArr.Length - 1; i++)
                {
                    for (int j = i + 1; j < strArr.Length; j++)
                    {
                        string temp = "";
                        if (Compare(strArr[i], strArr[j]) > 0)
                        {
                            temp = strArr[i];
                            strArr[i] = strArr[j];
                            strArr[j] = temp;
                        }
                    }
                }
    
                foreach (string str in strArr)
                {
                    Console.WriteLine(str);
                }
    
                Console.ReadKey();
            }
    
            static int Compare(string a, string b)
            {
                // 如果a=b=null,则返回a相等b
                if (a == null && b == null)
                    return 0;
    
                // 如果a!=null同时b=null,则返回a大于b
                if (a != null && b == null)
                    return 1;
    
                // 如果a==null同时b!=null,则返回a小于b
                if (a == null && b != null)
                    return -1;
    
                char[] aArray = a.ToCharArray();
                char[] bArray = b.ToCharArray();
    
                // 否则对他们进行直接比较
                for (int i = 0; i < aArray.Length; i++)
                {
                    if (i > bArray.Length - 1)
                        return 1;
    
                    if (aArray[i] > bArray[i])
                    {
                        return 1;
                    }
                    else if (aArray[i] < bArray[i])
                    {
                        return -1;
                    }
                    // 相等则不处理。。。
                }
    
                // 此时则a.length==b.length或者b.length>a.length
                return (a.Length == b.Length) ? 0 : -1;
            }
        }
    }

     测试打印结果:

  • 相关阅读:
    哈哈,原来这叫做“松鼠症”……并谈谈我建议的学习方法
    入坑IT十年(二)技术以外
    入坑IT都快十年了
    也来谈谈IT培训
    技术,是不是越新越好?
    十年之后再看“面向对象”
    话说,你这样根本就不应该去“创业型”公司
    我为什么不做外包
    NetTopologySuite Geometry&WKT&WKB&GeoJSON互转
    wpf 打印图片
  • 原文地址:https://www.cnblogs.com/yy3b2007com/p/8858397.html
Copyright © 2020-2023  润新知