这个题目在8期的时候,讨论过的
http://bbs.itheima.com/forum.php?mod=viewthread&tid=57681&extra=page%3D1%26filter%3Dtypeid%26typeid%3D180%26typeid%3D180
但里面给的方法,都只能实现最后一位的排序,前三位排序不了,貌似老师的意思也是这样
前段时间我试着写了每一位都排序,但有个瑕疵最终输出都成了三位的,目前还没想到更好的方法,当然你也可以在上面的贴中找到仅排最后一位的好方法。
- using System;
- using System.IO;
- using System.Text;
- namespace test36
- {
- internal class Program
- {
- private static void Main(string[] args)
- {
- var lines = File.ReadAllLines(@"..\..\IpInfo.txt", Encoding.Default); //读取txt文档
- foreach (var l in lines) //循环输出排序前的IP
- {
- Console.WriteLine(l);
- }
- var arrNum = new long[lines.Length]; //定义一个空的数组
- for (var i = 0; i < lines.Length; i++) //遍历每一行数据
- {
- var str = lines[i].Split('.'); //以点分割
- var strBuilder = new StringBuilder();
- foreach (var t in str)
- {
- strBuilder.Append(t.PadLeft(3, '0'));
- } //192.168.90.20 处理后 192168090020
- arrNum[i] = Convert.ToInt64(strBuilder.ToString());
- }
- BubbleSort(arrNum); //数组排序
- var arrStr = new string[lines.Length];
- for (var i = 0; i < arrNum.Length; i++)
- {
- arrStr[i] = string.Format("{0:0,00}", arrNum[i]).Replace(',', '.');
- } //192168090020 处理后是 192.168.090.020
- Console.WriteLine("排序后: "); //输出排序后的结果
- foreach (var t in arrStr)
- {
- Console.WriteLine(t);
- }
- Console.ReadKey();
- }
- public static void BubbleSort(long[] arr)
- {
- for (var i = 0; i < arr.Length - 1; i++)
- {
- for (var j = 0; j < arr.Length - i - 1; j++)
- {
- if (arr[j] <= arr[j + 1]) continue;
- var temp = arr[j];
- arr[j] = arr[j + 1];
- arr[j + 1] = temp;
- }
- }
- }
- }
- }
复制代码 |