关于Python运用数据结构

本文介绍了如何使用Python的random库生成不同规模的正序、逆序和随机排列,并实现了起泡排序和快速排序算法。通过对比两种算法在不同规模下的时间性能,展示了它们的效率差异。
摘要由CSDN通过智能技术生成

首先,我们需要生成不同规模的问题。这里我们使用Python的random库来生成随机数。然后,我们将分别实现起泡排序和快速排序算法。最后,我们将比较这两种算法在不同问题规模下的时间性能。

 

1. 生成问题规模为1000、10000、100000、1000000的正序、逆序和随机的初始排列:

 

```python

import random

 

def generate_data(size):

    # 正序排列

    ascending = list(range(1, size + 1))

    # 逆序排列

    descending = list(range(size, 0, -1))

    # 随机排列

    random_order = random.sample(range(1, size + 1), size)

    return ascending, descending, random_order

 

sizes = [1000, 10000, 100000, 1000000]

for size in sizes:

    ascending, descending, random_order = generate_data(size)

    print(f"Size: {size}")

    print("Ascending:", ascending[:10], "...")

    print("Descending:", descending[:10], "...")

    print("Random:", random_order[:10], "...")

```

 

2. 实现起泡排序算法:

 

```python

def bubble_sort(arr):

    n = len(arr)

    for i in range(n):

        for j in range(0, n-i-1):

            if arr[j] > arr[j+1]:

                arr[j], arr[j+1] = arr[j+1], arr[j]

    return arr

```

 

3. 实现快速排序算法:

 

```python

def quick_sort(arr):

    if len(arr) <= 1:

        return arr

    pivot = arr[len(arr) // 2]

    left = [x for x in arr if x < pivot]

    middle = [x for x in arr if x == pivot]

    right = [x for x in arr if x > pivot]

    return quick_sort(left) + middle + quick_sort(right)

```

 

4. 比较时间性能:

 

```python

import time

 

def compare_time(algorithm, arr):

    start_time = time.time()

    algorithm(arr)

    end_time = time.time()

    return end_time - start_time

 

for size in sizes:

    ascending, descending, random_order = generate_data(size)

    print(f"Size: {size}")

    print("Bubble sort time:")

    print("Ascending:", compare_time(bubble_sort, ascending))

    print("Descending:", compare_time(bubble_sort, descending))

    print("Random:", compare_time(bubble_sort, random_order))

    print("Quick sort time:")

    print("Ascending:", compare_time(quick_sort, ascending))

    print("Descending:", compare_time(quick_sort, descending))

    print("Random:", compare_time(quick_sort, random_order))

```

 

运行上述代码,可以得到不同问题规模下的起泡排序和快速排序的时间性能。你可以将这些数据截屏并进行分析。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值