数据结构与算法-快速排序

简介: 数据结构与算法-快速排序

快速排序特点 :

思路:

   1.取第一个元素p,使元素p归位;

   2.列表被p分成两部分,左边都比p小,右边都比p大;

   3.递归完成排序.

快速排序的效率:O(nlogn)

代码实现:

def partition(li,left,right):
    tmp=li[left]
    while left<right:
        while left<right and li[right]>=tmp: #从右边找比tmp小的数
            right-=1  # 往左走一步
        li[left]=li[right]  # 把右边的值写到左边空位上 此时开始找右边要填的值
        while left<right and li[left]<=tmp:
            left+=1  # 往右走一步
        li[right]=li[left]  # 把左边的值写到右边空位上
    li[left]=tmp   # 把tmp归位
    return right
def quick_sort(data,left,right):
    if left<right: # 最少有两个元素
        mid = partition(data,left,right)
        quick_sort(data,left,mid-1)
        quick_sort(data,mid+1,right)
    return data
 
li=[1,5,6,7,8,9,4,2,3]
print(quick_sort(li,0,len(li)-1))

总结:

       该算法通过选择一个基准元素,并根据它将列表分成两个子列表来对列表进行排序,子列表根据它们是否小于或大于基准元素进行划分。然后递归地对子列表进行排序。partition 函数用于根据基准元素对列表进行分区,quick_sort 函数递归地对子列表进行排序。最后,返回排序后的列表。

相关文章
|
1月前
|
算法 前端开发
前端算法之快速排序
前端算法之快速排序
19 0
|
1天前
|
算法 搜索推荐 JavaScript
算法学习:快速排序
算法学习:快速排序
7 1
|
1天前
|
搜索推荐
排序算法----快速排序----详解&&代码
排序算法----快速排序----详解&&代码
|
8天前
|
算法 搜索推荐 数据可视化
【漫画算法】指挥官的排序战术:快速排序算法解密
【漫画算法】指挥官的排序战术:快速排序算法解密
|
12天前
|
算法 搜索推荐
数据结构和算法——快速排序(算法概述、选主元、子集划分、小规模数据的处理、算法实现)
数据结构和算法——快速排序(算法概述、选主元、子集划分、小规模数据的处理、算法实现)
8 0
|
12天前
|
搜索推荐
深入理解数据结构第五弹——排序(2)——快速排序
深入理解数据结构第五弹——排序(2)——快速排序
|
18天前
|
存储 搜索推荐 算法
快速排序算法详解
快速排序算法详解
|
25天前
|
算法 C++
c++算法学习笔记 (1)快速排序
c++算法学习笔记 (1)快速排序
|
26天前
|
存储 搜索推荐 算法
[数据结构]————排序总结——插入排序(直接排序和希尔排序)—选择排序(选择排序和堆排序)-交换排序(冒泡排序和快速排序)—归并排序(归并排序)
[数据结构]————排序总结——插入排序(直接排序和希尔排序)—选择排序(选择排序和堆排序)-交换排序(冒泡排序和快速排序)—归并排序(归并排序)
|
28天前
|
算法 搜索推荐
【算法基础】基础算法(一)--(快速排序、归并排序、二分)
【算法基础】基础算法(一)--(快速排序、归并排序、二分)

热门文章

最新文章