通过代码实现随机隐去个人身份证号码中的 4 位数字号码信息在输入变量运行后可用字符或其它字符表示掩去个人信息并用 1~9 之间的随机数取代将此序列称为 ID_Number分别用插入排序法、选择排序法、二分归并排序法、快速排序算法实现对 ID_Number 的排序。40分要求:1随机隐去和取代过程需用代码实现替代后的结果需要显示;2几种方法需要分别写出伪代码选择自己熟悉的平台和语言编写并运行代码;3
伪代码:
- 生成一个随机数作为隐去数字的起始位置
- 隐去身份证号码中的4位数字,用随机数1-9代替
- 将替代后的身份证号码保存为ID_Number数组
插入排序法伪代码:
- 从第二个元素开始,将当前元素插入到已排序好的序列中
- 将ID_Number[i]与ID_Number[j]比较,如果ID_Number[j]>ID_Number[i],将ID_Number[i]插入到ID_Number[j]前面
- 重复步骤2直到所有元素都被插入
选择排序法伪代码:
- 从第一个元素开始,找到整个数组中最小的元素
- 将最小的元素与第一个元素交换位置
- 从第二个元素开始,找到剩下未排序的部分中最小的元素,将其与第二个元素交换位置
- 重复步骤3直到所有元素都被排序
二分归并排序法伪代码:
- 将数组分为左右两个部分,分别对左右两个部分进行排序
- 将排好序的左右两个部分进行合并,合并后的数组仍有序
快速排序法伪代码:
- 选择一个枢轴元素
- 将数组分为左右两个部分,左边的元素都小于枢轴元素,右边的元素都大于枢轴元素
- 对左右两个部分分别进行递归排序,直到所有元素都被排序
代码实现:
import random import time
随机生成一个身份证号码
id_num = '123456789012345678' id_num_list = list(id_num)
隐藏4位数字并用1-9的随机数代替
start = random.randint(0, 12) for i in range(start, start+4): id_num_list[i] = str(random.randint(1, 9))
ID_Number = id_num_list print("替换后的身份证号码:", ''.join(ID_Number))
插入排序
def insertion_sort(arr): for i in range(1, len(arr)): j = i while j > 0 and arr[j] < arr[j-1]: arr[j], arr[j-1] = arr[j-1], arr[j] j -= 1 return arr
start_time = time.time() sorted_arr = insertion_sort(ID_Number) end_time = time.time() print("插入排序后的结果:", ''.join(sorted_arr)) print("用时:{:.10f}s".format(end_time - start_time)) print()
选择排序
def selection_sort(arr): for i in range(len(arr)): min_index = i for j in range(i+1, len(arr)): if arr[j] < arr[min_index]: min_index = j arr[i], arr[min_index] = arr[min_index], arr[i] return arr
start_time
原文地址: https://www.cveoy.top/t/topic/fWaK 著作权归作者所有。请勿转载和采集!