美文网首页
python四种排序算法,冒泡、选择、插入、快速

python四种排序算法,冒泡、选择、插入、快速

作者: 举颗凤梨 | 来源:发表于2019-08-04 10:08 被阅读0次

1.选择排序

  • 首先将第一个元素依次与后面的元素比较,如果第一个元素比后面大,交换其位置,一轮下来,最小值会被移到第一位

  • 将第二个元素依次与后面比较,重复上述操作,第二轮下来,第二小的值会被移到第二位

  • 持续重复上面的步骤,直到没有任何一对数字需要比较。

def select_sort(array):
    length = len(array)
    for i in range(length):
        for j in range(i+1,length):
            if array[i] > array[j]:
                array[i],array[j] = array[j],array[i]
    return array

2.冒泡排序

  • 依次比较相邻的元素。如果前者大于后者,就交换他们两个。一组比较下来,最大值会被排到最后
  • 依次比较相邻的元素,和第一步一样,只是不比较最后一位,第二轮下来,第二大的值会被排到倒数第二位
  • 持续重复上面的步骤,直到没有任何一对数字需要比较。
def bubble_sort(array):
    length = len(array)
    for i in range(length):
        for j in range(0,length-i-1):
            if array[j] > array[j+1]:
                array[j],array[j+1] = array[j+1],array[j]
    return array

3.插入排序

  • 首先假设序列已经被排序,所以开始位置从第二位开始,默认第一位已经排序好
  • 将需要排序的元素和它前面的每一个元素比较,如果有待插入元素比前面某一元素小,则将指定元素插入到其前面
  • 注意:待排序的元素需要事先保存,再与前方的元素比较
  • 一轮下来,待插入元素和它之前的元素都已经被排好序
def insert_sort(array):
    for i in range(1, len(array)):
        key = array[i]
        j = i - 1
        while j >= 0 and key < array[j]:
            array[j + 1] = array[j]
            j -= 1
        array[j + 1] = key

4.快速排序

  • 挑选基准值:从数列中挑出一个元素,称为"基准"(pivot);
  • 分割:重新排序数列,所有比基准值小的元素摆放在基准前面,所有比基准值大的元素摆在基准后面(与基准值相等的数可以到任何一边)。在这个分割结束之后,对基准值的排序就已经完成;
  • 递归排序子序列:递归地将小于基准值元素的子序列和大于基准值元素的子序列排序。
def partition(arr, low, high):
    i = (low - 1)  # 最小元素索引
    pivot = arr[high]
    for j in range(low, high):
        # 当前元素小于或等于 pivot
        if arr[j] <= pivot:
            i = i + 1
            arr[i], arr[j] = arr[j], arr[i]
    arr[i + 1], arr[high] = arr[high], arr[i + 1]
    return (i + 1)
# arr[] --> 排序数组
# low  --> 起始索引
# high  --> 结束索引

# 快速排序函数
def quickSort(arr, low, high):
    if low < high:
        pi = partition(arr, low, high)
        quickSort(arr, low, pi - 1)
        quickSort(arr, pi + 1, high)

常见的时间复杂度高低排序:O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n2logn)<O(n3)
循环减半的过程,时间复杂度为O(logn)或O(log2n)

相关文章

  • Python排序算法有哪几种?

    python排序算法有哪些?python中常见的排序算法有:插入排序、选择排序、冒泡排序、快速排序、归并排序、希尔...

  • 图形化排序算法比较:快速排序、插入排序、选择排序、冒泡排序

    图形化排序算法比较:快速排序、插入排序、选择排序、冒泡排序 图形化排序算法比较:快速排序、插入排序、选择排序、冒泡排序

  • python 排序算法

    文章概述 介绍各大常用经典的排序算法和效率,以及python实现常用算法(冒泡排序,选择排序,快速排序,插入排序)...

  • OC常用算法

    排序算法 冒泡排序 选择排序 快速排序 插入 二分查找

  • 算法之:排序

    排序算法 冒泡排序 选择排序 快速排序 插入 二分查找

  • Python实现程序员必备之排序算法汇总

    本文用Python实现了快速排序、插入排序、希尔排序、归并排序、堆排序、选择排序、冒泡排序共7种排序算法。 一、快...

  • PHP 实现插入排序

    导语 关于排序的算法,就此告一段落。冒泡排序、快速排序、选择排序、加上本篇的插入排序,这四种算法都是相对简单,容易...

  • 排序题

    公共函数 选择排序 冒泡排序 插入排序 快速排序 归并排序——迭代算法

  • 排序算法

    常见的排序算法 常见的排序算法有:插入、希尔、选择、冒泡、归并、快速、堆排序。。。 插入排序 算法步骤一、从数组的...

  • 排序算法

    排序算法 冒泡排序 选择排序 插入排序 快速排序(最常见) 希尔排序 归并排序 源码:Sorting 冒泡排序 冒...

网友评论

      本文标题:python四种排序算法,冒泡、选择、插入、快速

      本文链接:https://www.haomeiwen.com/subject/gdijdctx.html