当前位置:主页 > 网站制作 > Python技术 >

Python的排序算法

  Python内置了多种排序算法,也可以自己实现各种排序算法。常见的排序算法有:

  1. 冒泡排序:

  - 相邻元素两两比较,大的元素下沉

  - 时间复杂度O(n2),稳定排序

  - 语法:

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]

  2. 选择排序:

  - 找到最小元素,和第一个位置交换

  - 时间复杂度O(n2),不稳定排序

  - 语法:

python
def selection_sort(nums):
    n = len(nums)
    for i in range(n):
        min_idx = i
        for j in range(i+1, n):
            if nums[j] < nums[min_idx]: 
                min_idx = j     
        nums[i], nums[min_idx] = nums[min_idx], nums[i] 


  3. 插入排序:

  - 将元素插入已排序好的序列中

  - 时间复杂度O(n2),稳定排序

  - 语法:

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

  4. 快速排序:

  - 选取 pivot,将小于 pivot 放左侧,大于 pivot 放右侧

  - 时间复杂度O(nlogn),不稳定排序

  - 语法:
 

python
def quick_sort(nums, l, r):
    if l >= r:
        return 
    i, j = l, r
    pivot = nums[l]
    while i < j:
        while i < j and nums[j] > pivot: 
            j -= 1
        nums[i] = nums[j]
        while i < j and nums[i] <= pivot:  
            i += 1
        nums[j] = nums[i]
    nums[i] = pivot 
    quick_sort(nums, l, i-1)  
    quick_sort(nums, i+1, r)

  要学习各种排序算法的实现方法和时间复杂度。要在项目中根据需求选择正确的排序算法解决问题。

  排序算法的学习有助于理解算法的设计和优化方法。要熟练掌握常见的排序算法,不断总结和提高。排序算法属于算法必修内容,需要在代码中长期实践。

  要养成在日常编码中使用标准库排序和自定义排序的习惯。排序算法的理解和应用属于技术提高的重点,需要持续强化和优化。

Python的排序算法

  要不断精进,深入研究各种排序算法,实现高效、优化的算法程序。排序算法的学习有助于培养严谨的逻辑思维,成为专业的软件工程师。

上一篇:Python的堆

猜你喜欢

微信公众号