排序代码
时间:2019-09-03
本文章向大家介绍排序代码,主要包括排序代码使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
快速排序
def quicksort(arr, l, r): i = l j = r temp = arr[l] p = l while i < j: while (arr[j] >= temp) & (i < j): j -= 1 if j > p: arr[p] = arr[j] p = j while (arr[i] <= temp) & (i < j): i += 1 if i < p: arr[p] = arr[i] p = i arr[p] = temp if p - 1 > l: quicksort(arr, l, p-1) if p + 1 < r: quicksort(arr, p+1, r) if __name__ == '__main__': arr = [34, 45, 12, 78, 6, 23, 89, 56, 8, 67] l = 0 r = len(arr) - 1 print("快排前:", arr) quicksort(arr, l, r) print("快排后:", arr)
冒泡排序
def bubblesort(arr): arr_len = len(arr) - 1 for i in range(0, arr_len): for j in range(0, arr_len): if arr[j] > arr[j+1]: arr[j], arr[j+1] = arr[j+1], arr[j] if __name__ == '__main__': arr = [34, 45, 12, 78, 6, 23, 89, 56, 8, 67] print("排序前:", arr) bubblesort(arr) print("排序后:", arr)
插入排序
def insertsort(arr): arr_len = len(arr) for i in range(1, arr_len): j = i-1 while j >= 0: if arr[j+1] < arr[j]: arr[j], arr[j+1] = arr[j+1], arr[j] j -= 1 if __name__ == '__main__': arr = [34, 45, 12, 78, 6, 23, 89, 56, 8, 67] print("排序前:", arr) insertsort(arr) print("排序后:", arr)
选择排序
def selectsort(arr): arr_len = len(arr) index = 0 while index < arr_len: min_value = min(arr[index:arr_len]) for i in range(index, arr_len): if arr[i] == min_value: arr[index], arr[i] = arr[i], arr[index] break index += 1 if __name__ == '__main__': arr = [34, 45, 12, 78, 6, 23, 89, 56, 8, 67] print("排序前:", arr) selectsort(arr) print("排序后:", arr)
归并排序
def mergesort(arr, l, r): if l < r: print(l, r) mid = (l + r)//2 print(mid) mergesort(arr, l, mid) mergesort(arr, mid+1, r) temp_list = [] i, j = l, mid+1 while (i<=mid) & (j<=r): if arr[i] < arr[j]: temp_list.append(arr[i]) i += 1 elif arr[i] > arr[j]: temp_list.append(arr[j]) j += 1 else: temp_list.append(arr[i]) temp_list.append(arr[j]) i += 1 j += 1 while i <= mid: temp_list.append(arr[i]) i += 1 while j <= r: temp_list.append(arr[j]) j += 1 arr[l:r+1] = temp_list if __name__ == '__main__': arr = [34, 45, 12, 78, 6, 23, 89, 56, 8, 67] print("排序前:", arr) mergesort(arr, 0, len(arr)-1) print("排序后:", arr)
原文地址:https://www.cnblogs.com/shnuxiaoan/p/11453138.html
- 【学习笔记】先行者课程0109-rotate3d_变量、堆、栈
- 通过WCF扩展实现消息压缩
- Linux系统中的信号量机制
- 基于Linux与lpc3250开发板的交叉开发环境搭建
- WCF中关于可靠会话的BUG!!
- [WCF安全系列]谈谈WCF的客户端认证[Windows认证]
- ls命令实现分析
- [WCF安全系列]谈谈WCF的客户端认证[X.509证书认证]
- Openstack Trove概要
- [WCF安全系列]实例演示:TLS/SSL在WCF中的应用[SSL over TCP]
- [WCF安全系列]谈谈WCF的客户端认证[用户名/密码认证]
- [WCF安全系列]绑定、安全模式与客户端凭证类型:BasicHttpBinding
- [WCF安全系列]服务凭证(Service Credential)与服务身份(Service Identity)
- 如何正确的对安卓手机进行数据恢复?
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Spring JDBC 框架,我的学习笔记
- 磁盘扩容
- 如何在MySQL中创建存储过程
- 磁盘扩容
- PyCharm安装疯狂打字机插件
- Java Lombok 常用注解
- Python 基础 安装 简单的输入输出 运行一个py程序
- Python 基础 数据类型 变量常量
- Java 快速排序 关于起始方向的选择问题 为什么一定要从右边开始
- Java 使用异或进行数组元素交换时的坑 返回0的原因
- Spring BindingResult获取不到结果可能的原因之一 参数顺序 没有紧挨着校验参数
- 残差收缩网络:一种深度学习故障诊断算法
- Solr学习笔记 - 关于近实时搜索
- Solr学习笔记 - 关于timeAllowed
- Solr学习笔记 - 关于cache