首页 > 编程知识 正文

整数排序Python实现

时间:2023-11-20 07:27:04 阅读:302407 作者:QFTS

整数排序是计算机科学中的基本算法之一,它通过对一组整数进行排序,使其按照升序或降序排列。Python是一种具有简洁、易读性和强大功能的编程语言,提供了多种方法和算法来实现整数排序。

一、冒泡排序

冒泡排序是一种基本的排序算法,它通过多次遍历待排序的列表,比较相邻的元素并交换位置,通过重复这个过程直到列表有序。

def bubble_sort(nums):
    n = len(nums)
    for i in range(n):
        for j in range(0, n - i - 1):
            if nums[j] > nums[j + 1]:
                nums[j], nums[j + 1] = nums[j + 1], nums[j]

nums = [5, 2, 9, 1, 6]
bubble_sort(nums)
print(nums)  # 输出:[1, 2, 5, 6, 9]

冒泡排序的时间复杂度是O(n^2),其中n是待排序列表的长度。

二、插入排序

插入排序是一种简单直观的排序算法,它将待排序的元素按照顺序插入已排序的列表中。

def insertion_sort(nums):
    n = len(nums)
    for i in range(1, n):
        key = nums[i]
        j = i - 1
        while j >= 0 and key < nums[j]:
            nums[j + 1] = nums[j]
            j -= 1
        nums[j + 1] = key

nums = [5, 2, 9, 1, 6]
insertion_sort(nums)
print(nums)  # 输出:[1, 2, 5, 6, 9]

插入排序的时间复杂度是O(n^2),其中n是待排序列表的长度。

三、快速排序

快速排序是一种高效的排序算法,它通过选择一个基准元素,将列表分割为两部分,并递归地对这两部分进行排序。

def quick_sort(nums):
    if len(nums) <= 1:
        return nums
    pivot = nums[len(nums) // 2]
    left = [x for x in nums if x < pivot]
    middle = [x for x in nums if x == pivot]
    right = [x for x in nums if x > pivot]
    return quick_sort(left) + middle + quick_sort(right)

nums = [5, 2, 9, 1, 6]
sorted_nums = quick_sort(nums)
print(sorted_nums)  # 输出:[1, 2, 5, 6, 9]

快速排序的平均时间复杂度是O(n log n),其中n是待排序列表的长度。

四、归并排序

归并排序是一种分治算法,它将待排序的列表分割成更小的子问题,然后递归地解决子问题,并将子问题的解合并起来。

def merge_sort(nums):
    if len(nums) <= 1:
        return nums
    mid = len(nums) // 2
    left = nums[:mid]
    right = nums[mid:]
    left = merge_sort(left)
    right = merge_sort(right)
    return merge(left, right)

def merge(left, right):
    result = []
    i = j = 0
    while i < len(left) and j < len(right):
        if left[i] < right[j]:
            result.append(left[i])
            i += 1
        else:
            result.append(right[j])
            j += 1
    result.extend(left[i:])
    result.extend(right[j:])
    return result

nums = [5, 2, 9, 1, 6]
sorted_nums = merge_sort(nums)
print(sorted_nums)  # 输出:[1, 2, 5, 6, 9]

归并排序的时间复杂度是O(n log n),其中n是待排序列表的长度。

五、总结

整数排序是计算机科学中常用的算法之一,Python提供了多种方法和算法来实现整数排序。冒泡排序、插入排序、快速排序和归并排序都是常见的排序算法,每种算法都有各自的优缺点和适用场景。选择合适的算法取决于待排序列表的长度、性能需求和其他因素。通过理解和掌握这些排序算法,在实际开发中能够根据需求灵活选择合适的排序算法,提高程序效率和性能。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。