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;
        }
    }
}

 测试打印结果:

 

posted @ 2018-04-16 20:37  cctext  阅读(1244)  评论(0编辑  收藏  举报