zoukankan      html  css  js  c++  java
  • 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;
            }
        }
    }

     测试打印结果:

  • 相关阅读:
    HTML知识点链接
    Apache和PHP的安装
    MySql的安装
    MY_FIRSH_MODULE
    【PAT甲级】1053 Path of Equal Weight (30 分)(DFS)
    Atcoder Grand Contest 039B(思维,BFS)
    Codeforces Round #589 (Div. 2)E(组合数,容斥原理,更高复杂度做法为DP)
    Codeforces Round #589 (Div. 2)D(思维,构造)
    【PAT甲级】1052 Linked List Sorting (25 分)
    【PAT甲级】1051 Pop Sequence (25 分)(栈的模拟)
  • 原文地址:https://www.cnblogs.com/yy3b2007com/p/8858397.html
Copyright © 2011-2022 走看看