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