100,000 个 1 到 100 之间随机数排序:冒泡排序法和快速排序法
100,000 个 1 到 100 之间随机数排序:冒泡排序法和快速排序法
本文将介绍如何生成 100,000 个 1 到 100 之间的随机数,其中包含 10 个重复数据,每个数据重复 10 次。然后使用冒泡排序法和快速排序法对这些随机数进行排序,并提供 Python 代码示例。
随机数生成及重复数据添加
首先,我们需要生成 100,000 个 1 到 100 之间的随机数,并在其中添加 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)
快速排序法
快速排序法是一种高效的排序算法,它通过递归的方式将数组划分为两个子数组,并分别对子数组进行排序。
- 选定一个基准数(一般为第一个数),将数组中小于基准数的数放在左边,大于基准数的数放在右边,基准数放在中间;
- 对左右两边的数组重复以上步骤,直到所有数都排好序。
# 快速排序
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/n5in 著作权归作者所有。请勿转载和采集!