python3 冒泡排序 快速排序
冒泡排序
def bubble_sort(L):length = len(L)for i in range(0, length):for j in range(i + 1, length):if L[i] > L[j]:L[i], L[j] = L[j], L[i]return Larr = [1,53,2,1,9,0]
print(bubble_sort(arr))
快速排序
# 左小右大函数,获取一个中值,左放小右放大函数
def partition(arr, low, high): #参数:列表,列表的第一个索引0,最后一个索引值N"""【左小右大函数】实现结果:提取列表中的最后一个元素为被比较值,≤该元素的值放在左边,>该元素的值放在右边实现过程:≤最后一个元素的所有元素依次放在左边索引0~i的位置,然后将最后一个元素放在索引i的位置,实现结果arr: 列表low: arr的第一个索引:0high: arr的最后一个索引:highreturn: i,即被比较值所在的索引位置"""i = low # 最小元素索引pivot = arr[high] # 最后一个元素,我们把列表中的所有元素同它比较for j in range(low, high): #从第一个索引到倒数第二个索引if arr[j] <= pivot: #从第一个元素到倒数第二个元素依次判断是否≤最后一个元素arr[i], arr[j] = arr[j], arr[i] #≤最后一个元素的所有元素依次放在左边索引0~i的位置i = i + 1arr[i], arr[high] = arr[high], arr[i] #然后将最后一个元素放在索引i的位置,实现:该元素左边的都比它小,右边的都比它大的排序return (i) #返回该元素的索引位置# 快速排序函数
def quickSort(arr, low, high):if low < high: #如果列表有1个以上的元素pi = partition(arr, low, high) #获取左小右大函数中的 被比较数所在的索引quickSort(arr, low, pi - 1) #反复循环,左排序quickSort(arr, pi + 1, high) #反复循环,右排序arr = [10,22,78,3,12,9,1,11,33,2]
low = 0
high = len(arr)-1
quickSort(arr, low, high)
print(arr)
python3 冒泡排序 快速排序相关推荐
- Python3实现快速排序 通俗易懂
Python3实现快速排序 快速排序 是一种交换排序,属于分治算法. 思路: 对于要排序的元素集合,指定集合的第一个元素为基准点,通过一系列的扫描和交换(见下面的代码),让基准点左边的元素比基准点小, ...
- js实现冒泡排序,快速排序,选择排序
用js冒泡排序,快速排序,选择排序 1.冒泡排序 冒泡排序是比较经典的排序方法,是一种用时间换空间的排序方法.我总结了一下它的特点:(1)它的时间复杂度是:(2)每一趟相邻元素两两比较完毕就会产生最值 ...
- php二分法 冒泡 快速排序,PHP 常见算法【冒泡排序, 快速排序, 插入排序, 取舍排序, 二分法查找, .】...
PHP 常见算法[冒泡排序, 快速排序, 插入排序, 选择排序, 二分法查找, ..] // 冒泡排序 function bubblesort($arr) { for($i=0,$j=count($a ...
- 数据结构(八):排序 | 插入排序 | 希尔排序 | 冒泡排序 | 快速排序 | 简单选择排序 | 堆排序 | 归并排序 | 基数排序 | 外部排序 | 败者树 | 置换-选择排序 | 最佳归并树
文章目录 第八章 排序 一.排序的基本概念 (一)什么是排序 (二)排序的应用 (三)排序算法的评价指标 (四)排序算法的分类 (五)总结 二.插入排序 (一)算法思想 (二)算法实现 (三)算法效率 ...
- 数据结构与算法 第八天常见排序+冒泡排序+快速排序+文件IO+大数据排序+文件合并
数据结构与算法 第八天常见排序+冒泡排序+快速排序+文件IO+大数据排序+文件合并 第一章 冒泡排序 [1]Bubble_Sort.c 第二章 快速排序 [1]quick_sort.c 第三章 大数据 ...
- 冒泡排序 快速排序 插入排序 选择排序
最近面试好多公司考察算法,特意整理了一下: 1. 冒泡排序 思路分析:在要排序的一组数中,对当前还未排好的序列,从前往后对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒.即,每当两相邻 ...
- 王道八大排序:直接插入排序 折半插入排序 希尔排序 冒泡排序 快速排序 归并排序 基数排序
文章目录 1.插入排序 1.1直接插入排序 1.2折半插入排序 1.3希尔排序 2.交换排序 2.1冒泡排序 2.2快速排序 3.选择排序 3.1简单选择排序 3.2堆排序 4.归并排序 5.基数排序 ...
- 冒泡排序+快速排序+选择排序(图解)
冒泡排序 原理 假设有10个数,第一轮循环,第一个数和第二个数比较,如果第一个数大,第一个数和第二个数交换位置,否则不动:接着第二个数和第三个数比较,如果第二个数大,第二个数和第三个数交换位置,否则不 ...
- 直接插入排序 希尔排序 冒泡排序 快速排序 直接选择排序 堆排序 归并排序 基数排序的算法分析和具体实现 ...
排序分为内部排序和外部排序 内部排序是把待排数据元素全部调入内存中进行的排序. 外部排序是因数量太大,把数据元素分批导入内存,排好序后再分批导出到磁盘和磁带外存介质上的排序方法. 比较排序算法优劣的标 ...
最新文章
- 数据结构与算法(6-1)树的存储(树的双亲表示、树的孩子表示及树的双亲孩子表示)
- nvidia旧版驱动_N卡用户注意:老版驱动存在5个高危漏洞,赶紧更新
- 万字长文解读运营商搏击5G:一场比拼财力的三国杀
- 出去之后,好好做人!华为两年,苦乐参半!
- Exchange Server 2010安装测试
- 服务级后门自己做——创建服务
- python界面图片-python如何实现读取并显示图片(不需要图形界面)
- 【Flutter】Flutter 调试 ( 调试回退功能 | Debug 调试中查看变量的方式 | 控制台信息 )
- 宜昌远安谋定功能性-农业大健康·万祥军:绿色和谐新路
- 你有必要知道的一些JavaScript 面试题(中)
- MySQL高级 - 锁 - MyISAM表锁 - 查看锁争用情况
- Css3旋转、位移、缩放、倾斜动画
- 解决margin-top塌陷问题的六种方法
- 做人不能太心软,这三件事上,越狠心就越受益
- 嵌入式开发的职业前景分析
- 机器学习入门算法基础视频
- 【C#大作业】你画我猜——设计文档
- U盘检测及量产工具大合集
- 2 机器学习基本概念
- java tls_Java客户端中具有SNI的TLS
热门文章
- 计算机网络学习--协议族、协议栈
- 多组两两比较用什么检验方法_手把手教你多组独立样本的非参数检验及两两比较...
- excel查找在哪里_HR:对不起,我们公司不招25岁还用不好Excel的人
- NVP6124I北京冠宇铭通 芯片
- 什么是计算机网络的组成和功能是什么,计算机网络的组成要素及功能是什么
- 来自北京大学NOIP金牌选手yxc的常用代码模板3——搜索与图论
- 整数二分详解---yxc
- 2021-2027全球与中国GPU服务器市场现状及未来发展趋势
- 音/视频码率分配策略
- 【Distill 系列:三】CVPR2019 Relational Knowledge Distillation