IP地址排序

题目:把以下IP存入一个txt文件,编写程序把这些IP地址按数值大小,从小到达排序并打印出来。
61.54.231.245
61.54.231.9
61.54.231.246
61.54.231.48
61.53.231.249

主要思路如下:

 class Program
    {//本题目主要用到了文件+冒泡排序+字符串处理
        static void Main(string[] args)
        {
            //读取ip地址
            string[] str = File.ReadAllLines("IP地址.txt", Encoding.Default);

            //冒泡排序
            for (int i = 0; i < str.Length; i++)
            {
                for (int j = 0; j < str.Length - 1 - i; j++)
                {
                    if (ToNumber(str[j]) > ToNumber(str[j + 1]))
                    {
                        string strBu = str[j];
                        str[j] = str[j + 1];
                        str[j + 1] = strBu;
                    }
                }
            }

            //输出IP地址排序后的结果
            for (int i = 0; i < str.Length; i++)
            {
                Console.WriteLine(str[i]);
            }
            Console.ReadKey();
        }

        /*Ip地址格式为:a.b.c.d
        每个数字范围在0~255之间,我们可以把它们看成一个四位的256进制数 
        然后转换成十进制=a*256^3+b*256^2+c*256^1+d*256^0
        然后根据对应的十进制大小排序就OK了。*/
        private static int ToNumber(string str)
        {
            string[] p = str.Split('.');
            int sum = 0;
            for (int i = 0; i < p.Length; i++)
            {
                //每个IP地址累加和
                sum = sum * 256 + int.Parse(p[i]);
            }
            return sum;
        }
    }


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章