测试开发面试题:如何进行ip地址的排序

📝 面试求职: 「面试试题小程序」 ,内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中率杠杠的。(大家刷起来…)

📝 职场经验干货:

软件测试工程师简历上如何编写个人信息(一周8个面试)

软件测试工程师简历上如何编写专业技能(一周8个面试)

软件测试工程师简历上如何编写项目经验(一周8个面试)

软件测试工程师简历上如何编写个人荣誉(一周8个面试)

软件测试行情分享(这些都不了解就别贸然冲了.)

软件测试面试重点,搞清楚这些轻松拿到年薪30W+

软件测试面试刷题小程序免费使用(永久使用)


算法思想:

1 将ip地址使用.进行分割,分别获取4段ip地址的数字值,使用int函数转换为整数类型,然后通过每一段数字的位移分别获取一个32位的2进制数,再将4段二进制数求和。

例如:

IP: 192.168.1.1

  1. 第1段(192):左移24位  192 * (2^24)

  2. 第2段(168):左移16位  168 * (2^16)

  3. 第3段(1):  左移8位   1 * (2^8)

  4. 第4段(1):  不移位    1 * (2^0)

192.168.1.1 的二进制表示:

  1. 192 = 11000000

  2. 168 = 10101000

  3. 1   = 00000001

  4. 1   = 00000001

位移后:

  1. 192 << 24: 11000000 00000000 00000000 00000000

  2. 168 << 16: 00000000 10101000 00000000 00000000

  3. 1 << 8:    00000000 00000000 00000001 00000000

  4. 1:         00000000 00000000 00000000 00000001

相加后:
11000000 10101000 00000001 00000001 (32位)

2 转换后可以直接使用数值比较

3 利用Python的sorted()函数

4 使用key参数自定义排序规则

5 将IP地址转换为整数进行比较

代码实现:

def ip_to_int(ip):
"""
将IP地址转换为整数,便于比较和排序
Args:  
    ip (str): 点分十进制的IP地址  
Returns:  
    int: 转换后的整数表示  
"""  
# 将IP地址按.分割  
parts = ip.split('.')  
# 将每个部分转换为整数并计算最终的整数值  
# 使用移位运算快速计算  
return (int(parts[0]) << 24) + \
       (int(parts[1]) << 16) + \
       (int(parts[2]) << 8) + \
       int(parts[3])  
def sort_ip_addresses(ip_list):
"""
对IP地址列表进行排序
Args:  
    ip_list (list): IP地址字符串列表  
Returns:  
    list: 排序后的IP地址列表  
"""  
# 使用内置排序,但自定义排序键  
return sorted(ip_list, key=ip_to_int)  
测试代码
def main():
# 示例IP地址列表
ips = [
"192.168.1.1",
"10.0.0.1",
"172.16.0.1",
"8.8.8.8"
]
# 排序并打印结果  
sorted_ips = sort_ip_addresses(ips)  
print("排序后的IP地址:")  
for ip in sorted_ips:  
    print(ip)  
if name == "main":
main()

复杂度分析

  • 时间复杂度

    • 转换IP:O(1)

    • 排序:O(n log n)(Python使用Timsort算法)

    • 总体时间复杂度:O(n log n)

  • 空间复杂度

    • 转换IP:O(1)

    • 排序:O(n)

    • 总体空间复杂度:O(n)

优点

  • 转换方法高效

  • 代码简洁清晰

  • 利用Python内置排序

注意事项

  • 假设IP地址格式合法

  • 适用于IPv4地址

  • 不处理特殊IP格式

运行示例:

排序后的IP地址:
8.8.8.8
10.0.0.1
172.16.0.1
192.168.1.1

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

​​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值