黑马程序员技术交流社区

标题: IP排序问题??? [打印本页]

作者: 张昶    时间: 2013-12-28 20:07
标题: IP排序问题???
把以下IP存入一个txt文件,编写程序把这些IP按数值大小,从小到达排序并打印出来。
61.54.231.245
61.54.231.9
61.54.231.246
61.54.231.48
61.53.231.249

求解???


作者: 于磊    时间: 2013-12-28 20:14
01.class Program  
02.   {//本题目主要用到了文件+冒泡排序+字符串处理  
03.       static void Main(string[] args)  
04.       {  
05.           //读取ip地址  
06.           string[] str = File.ReadAllLines("IP地址.txt", Encoding.Default);  
07.  
08.           //冒泡排序  
09.           for (int i = 0; i < str.Length; i++)  
10.           {  
11.               for (int j = 0; j < str.Length - 1 - i; j++)  
12.               {  
13.                   if (ToNumber(str[j]) > ToNumber(str[j + 1]))  
14.                   {  
15.                       string strBu = str[j];  
16.                       str[j] = str[j + 1];  
17.                       str[j + 1] = strBu;  
18.                   }  
19.               }  
20.           }  
21.  
22.           //输出IP地址排序后的结果  
23.           for (int i = 0; i < str.Length; i++)  
24.           {  
25.               Console.WriteLine(str[i]);  
26.           }  
27.           Console.ReadKey();  
28.       }  
29.  
30.       /*Ip地址格式为:a.b.c.d
31.       每个数字范围在0~255之间,我们可以把它们看成一个四位的256进制数  
32.       然后转换成十进制=a*256^3+b*256^2+c*256^1+d*256^0
33.       然后根据对应的十进制大小排序就OK了。*/  
34.       private static int ToNumber(string str)  
35.       {  
36.           string[] p = str.Split('.');  
37.           int sum = 0;  
38.           for (int i = 0; i < p.Length; i++)  
39.           {  
40.               //每个IP地址累加和  
41.               sum = sum * 256 + int.Parse(p[i]);  
42.           }  
43.           return sum;  
44.       }  
45.   }  



作者: 张昶    时间: 2013-12-28 20:43
呵呵,你这也太牛了!谢谢哈!能有简单一点的吗?
作者: 张昶    时间: 2013-12-28 21:07
谢谢你,我自己也弄得了,不过和你的有一点区别。
作者: 张昶    时间: 2013-12-31 17:51
呵呵,我已经看了,谢谢哈!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2