随机生成100000的个 1 到 100 之间到随机数随机数中重复数据的个数为:10 × 10即随机数中有 10 个数存在重复数据每个数据重复 10 次。要求分别利用冒泡排序法和快速排序法对上述随机数据进行排序。
冒泡排序法:
- 从第一个数开始,依次比较相邻的两个数,如果前面的数比后面的数大,则交换它们的位置,直到最后一个数;
- 重复以上步骤,直到所有数都排好序。
快速排序法:
- 选定一个基准数(一般为第一个数),将数组中小于基准数的数放在左边,大于基准数的数放在右边,基准数放在中间;
- 对左右两边的数组重复以上步骤,直到所有数都排好序。
代码实现:
冒泡排序法:
import random
# 生成随机数
nums = [random.randint(1, 100) for i in range(100000)]
# 添加重复数据
for i in range(10):
idx = random.randint(0, 99999)
for j in range(10):
nums.insert(idx, nums[idx])
# 冒泡排序
for i in range(len(nums)-1):
for j in range(len(nums)-i-1):
if nums[j] > nums[j+1]:
nums[j], nums[j+1] = nums[j+1], nums[j]
print(nums)
快速排序法:
import random
# 生成随机数
nums = [random.randint(1, 100) for i in range(100000)]
# 添加重复数据
for i in range(10):
idx = random.randint(0, 99999)
for j in range(10):
nums.insert(idx, nums[idx])
# 快速排序
def quick_sort(nums):
if len(nums) <= 1:
return nums
pivot = nums[0]
left = []
right = []
for num in nums[1:]:
if num <= pivot:
left.append(num)
else:
right.append(num)
return quick_sort(left) + [pivot] + quick_sort(right)
nums = quick_sort(nums)
print(nums)
``
原文地址: https://www.cveoy.top/t/topic/fcJo 著作权归作者所有。请勿转载和采集!