首页 > 其他分享 >快速排序(NB)

快速排序(NB)

时间:2023-08-12 15:24:49浏览次数:31  
标签:tmp right NB li while 排序 快速 left

博客地址:https://www.cnblogs.com/zylyehuo/

# _*_coding:utf-8_*_

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]  # 把右边的值写到左边空位上
        print(li, 'right')
        while left < right and li[left] <= tmp:
            left += 1
        li[right] = li[left]  # 把左边的值写到右边空位上
        print(li, 'left')
    li[left] = tmp  # 把tmp归位
    return left


def _quick_sort(li, left, right):
    if left < right:  # 至少两个元素
        mid = partition(li, left, right)
        _quick_sort(li, left, mid - 1)
        _quick_sort(li, mid + 1, right)


def quick_sort(li):
    _quick_sort(li, 0, len(li) - 1)


ls = [5, 7, 9, 4, 8, 3, 6, 1]

quick_sort(ls)

print(ls)

标签:tmp,right,NB,li,while,排序,快速,left
From: https://www.cnblogs.com/zylyehuo/p/17624848.html

相关文章

  • rem布局快速写法
    vw的兼容性已经没问题,现在推荐优先使用vw但是rem布局还是有其用武之地,比如需要动态改变字体大小的场景(有小,中,大三种字体,可手动选择,方便不同人群查看)vw和rem的兼容性|兼容性|ios|安卓||rem|4.1+|2.1+||vw|6.1+|4.4+|js快速写法(与设计稿不挂钩)docu......
  • 交换排序
    数据结构--交换排序基本思想:两两比较,如果发生逆序则交换,直到所有记录都排好序为止.冒泡排序每趟不断将记录两两比较,并且按照"前小后大"规则交换.冒泡排序的过程演示n个记录,需要比较n-1趟.第m躺需要比较n-m次冒泡排序算法描述还可以继续优化:某一趟比较时不出现......
  • 【蓝桥杯备赛系列 | 简单题】数组排序(八大排序演示)
    ......
  • 冒泡排序
    #include<iostream>usingnamespacestd;intmain(){intt,a[4];for(inti=1;i<=3;i++){cin>>a[i];}for(inti=1;i<=2;i++){for(intj=1;j<=3-i;j++){if(a[j]<a[j+1]){t......
  • 【剑指Offer】16、合并两个排序的链表
    【剑指Offer】16、合并两个排序的链表题目描述:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。解题思路:首先需要判断几个特殊情况,即判断输入的两个指针是否为空。如果第一个链表为空,则直接返回第二个链表;如果第二个链表为空,则直接......
  • emmet快速生成html标签和css样式
    emmet快速生成html标签语法1.生成标签,直接输入标签名,按下tab键即可;2.生成多个相同标签,加上即可,如生成3个div标签,div3;3.生成父子级的标签,使用>号,如ul>li;4.生成兄弟标签,使用+号,如div+p;5.生成带有类名或者id名的标签,直接写.demo或者#id按下tab键即可;6.如果生成的div类名是......
  • C++快速排序
    快速排序介绍:基础思路:首先快速排序是由冒泡排序所改进的,都是通过多次比较和交换来实现排序,但快速排序是通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,分别对这两部分记录继续进行排序,以达到整个序列有序。思路详解:(1)首先我们先设定......
  • 拓端数据tecdat|R语言代写通过WinBUGS对MGARCH和MSV模型进行贝叶斯估计和比较
    多变量广义自回归条件异方差(MGARCH)和多变量随机波动率(MSV)模型与马尔可夫链蒙特卡罗方法的贝叶斯估计和比较可以直接和成功地在WinBUGS包中进行。经济全球化和金融市场的完整性促进了对资产定价,风险管理,投资组合选择等各个领域的多元波动建模的需求。因此,两种类型的模型-多变量广......
  • Objective-C 语法快速参考(附:Learning_Objective-C_A_Primer_中文版)
    关联:1.http://cocoadevcentral.com/d/learn_objectivec/2.http://www.otierney.net/objective-c.html.zh-tw.big53.http://www.geekylemon.com/xcodetutorials.htm4.http://www.cocoachina.com/b/ 大部分有一点其他平台开发基础的初学者看到XCode,第一感想是磨拳擦......
  • 快速幂算法
    快速幂算法快速幂算法是一种高效的计算幂的方法,它的核心思想是将指数分解为二进制形式,然后通过迭代计算得到结果。本文将详细介绍快速幂算法的原理、流程以及C++代码实现,并给出一个例题及题解。原理快速幂算法的基本思想是将指数表示为二进制形式,然后通过迭代计算得到结果。具......