首页 > 其他分享 >快速排序

快速排序

时间:2023-03-14 22:15:21浏览次数:51  
标签:tmp right while lst 归位 排序 快速 left

原理

  1. 取一个元素,使其归位(归位函数),归位后分为左边,右边,并且得到归位元素的位置
  2. 归位元素位置的左右两边列表分别执行递归操作

代码

def partion(lst, left, right):
	tmp = lst[left]
	while left < right:
		# 比较右边
		while lst[right] >= tmp and right > left:
			right -= 1
		# 找到比tmp小的数,放到左边位置
		lst[left] = lst[right]

		# 比较左边
		while lst[left] <= tmp and left < right:
			left += 1
		# 找到比tmp大的数,放到右边位置
		lst[right] = lst[left]

	lst[left] = tmp
	# 返回该数的位置
	return left

def quick_sort(lst, left, right):
	if left < right:
		mid = partion(lst, left, right)
		quick_sort(lst, left, mid - 1)
		quick_sort(lst, mid + 1, right)

lst = [random.randint(0, 100) for i in range(10)]
print(lst)
# partion(lst, 0, len(lst) - 1)
# print(lst)
quick_sort(lst, 0, len(lst) - 1)
print(lst)

标签:tmp,right,while,lst,归位,排序,快速,left
From: https://www.cnblogs.com/gzxiaohai/p/17216595.html

相关文章

  • Tapdata Cloud 基础课:新功能详解之「授权系统自动分析」,一键定位任务报错原因,快速获取
    【前言】作为中国的“Fivetran/Airbyte”,Tapdata是一个以低延迟数据移动为核心优势构建的现代数据平台,内置60+数据连接器,拥有稳定的实时采集和传输能力、秒级响应的......
  • 快速构造Python爬虫请求,有这个网站就够了!
    引言大家好,我是蜡笔小曦。我们在通过程序向某个网页发起请求时,实际上是模拟浏览器进行http(超文本传输协议)请求,这就要求我们需要按照固定的格式进行代码构造。一般请求......
  • 【排序算法】希尔排序
    1 前言今天把排序的几个算法过一下,这节我们看一下希尔排序,简单的来说就是多次插入排序,我们看示例。2 代码示例/***希尔排序,也就是多次插入排序*可以参考插入......
  • 统信系统快速开启ssh服务
    systemctl命令设置服务的开机自启,配置sshd允许root登陆,并重启sshd,添加ssh服务到开启自启动,这样一次操作SSH就能正常用了:(1)systemctlenablessh(2)update-rc.dsshena......
  • 【排序算法】插入排序
    1 前言今天把排序的几个算法过一下,这节我们看一下插入排序,简单的来说就是从第2个元素往前寻找位置进行插入,我们看示例。2 代码示例/***插入排序*从第2个元素......
  • 【排序算法】直接选择排序
    1 前言今天把排序的几个算法过一下,这节我们看一下直接选择排序,简单的来说就是默认某个位置为最小然后从位置后的元素逐个比较进行交换,我们看示例。2 代码示例/**......
  • 快速上手Meta大语言模型LLaMA,构建“本地化ChatGPT”
    近期,Meta发布了人工智能大语言模型LLaMA,包含70亿、130亿、330亿和650亿这4种参数规模的模型。其中,最小的LLaMA7B也经过了超1万亿个tokens的训练。本文我们将以7B模型为例,分......
  • 笔试算法《字符串排序_1》
    题目描述编写一个程序,将输入字符串中的字符按如下规则排序。规则1:英文字母从A到Z排列,不区分大小写。如,输入:Type输出:epTy规则2:同一个英文字母的大小写同时存在时,......
  • Steam流中的sorted方法排序
    使用方法packagecom.sports.basketball.controller.dto;importjava.util.ArrayList;importjava.util.Comparator;importjava.util.List;importjava.util.stream.Col......
  • 32位汇编语言实现冒泡排序
    INCLUDEIrvine32.inc.dataarrdd99,2,3,1,22,88,7,77,54;定义数组lendd($-arr)/4;定义数组的长度变量.codemainPROCmovedx,offsetarr......