伪代码:

  1. 生成一个随机数作为隐去数字的起始位置
  2. 隐去身份证号码中的4位数字,用随机数1-9代替
  3. 将替代后的身份证号码保存为ID_Number数组

插入排序法伪代码:

  1. 从第二个元素开始,将当前元素插入到已排序好的序列中
  2. 将ID_Number[i]与ID_Number[j]比较,如果ID_Number[j]>ID_Number[i],将ID_Number[i]插入到ID_Number[j]前面
  3. 重复步骤2直到所有元素都被插入

选择排序法伪代码:

  1. 从第一个元素开始,找到整个数组中最小的元素
  2. 将最小的元素与第一个元素交换位置
  3. 从第二个元素开始,找到剩下未排序的部分中最小的元素,将其与第二个元素交换位置
  4. 重复步骤3直到所有元素都被排序

二分归并排序法伪代码:

  1. 将数组分为左右两个部分,分别对左右两个部分进行排序
  2. 将排好序的左右两个部分进行合并,合并后的数组仍有序

快速排序法伪代码:

  1. 选择一个枢轴元素
  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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录