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; } } }
测试打印结果:
基础才是编程人员应该深入研究的问题,比如:
1)List/Set/Map内部组成原理|区别
2)mysql索引存储结构&如何调优/b-tree特点、计算复杂度及影响复杂度的因素。。。
3)JVM运行组成与原理及调优
4)Java类加载器运行原理
5)Java中GC过程原理|使用的回收算法原理
6)Redis中hash一致性实现及与hash其他区别
7)Java多线程、线程池开发、管理Lock与Synchroined区别
8)Spring IOC/AOP 原理;加载过程的。。。
【+加关注】。