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


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