冒泡排序法:

  1. 从第一个数开始,依次比较相邻的两个数,如果前面的数比后面的数大,则交换它们的位置,直到最后一个数;
  2. 重复以上步骤,直到所有数都排好序。

快速排序法:

  1. 选定一个基准数(一般为第一个数),将数组中小于基准数的数放在左边,大于基准数的数放在右边,基准数放在中间;
  2. 对左右两边的数组重复以上步骤,直到所有数都排好序。

代码实现:

冒泡排序法:

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)
``
随机生成100000的个 1 到 100 之间到随机数随机数中重复数据的个数为:10 × 10即随机数中有 10 个数存在重复数据每个数据重复 10 次。要求分别利用冒泡排序法和快速排序法对上述随机数据进行排序。

原文地址: https://www.cveoy.top/t/topic/fcJo 著作权归作者所有。请勿转载和采集!

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