python 常见排序实例
使用Python 基础排序算法设计,冒泡排序,插入排序,快速排序...
需求
对一组无序数据进行排序算法设计,要求如下:
输入:[1, 3, 5, 23, 75, 34, 456, 86, 22, 74, 37, 5, 34]
输出:[1, 3, 5, 5, 22, 23, 34, 34, 37, 74, 75, 86, 456]
冒泡排序
核心算法:循环比较相邻的两个元素,如果前面一个元素比后面一个元素大,则交换位置。
#!/usr/bin/env python
# -*- coding: utf-8 -*- def bubble_sort(data_source):
length = len(data_source)
for i in range(1, length):
for j in range(length - i):
if data_source[j] > data_source[j + 1]:
data_source[j], data_source[j + 1] = data_source[j + 1], data_source[j]
return data_source if __name__ == '__main__':
test_array = [1, 3, 5, 23, 75, 34, 456, 86, 22, 74, 37, 5, 34]
print bubble_sort(test_array)
插入排序
核心算法:从头到尾循环,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入,因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。
#!/usr/bin/env python
# -*- coding: utf-8 -*- def insert_sort(data_source):
count = len(data_source)
for i in range(1, count):
key = data_source[i]
j = i - 1
while j >= 0:
if data_source[j] > key:
data_source[j], data_source[j + 1] = key, data_source[j]
j -= 1
return data_source if __name__ == '__main__':
test_array = [1, 3, 5, 23, 75, 34, 456, 86, 22, 74, 37, 5, 34]
print insert_sort(test_array)
快速排序
核心算法:每次循环,取一个基数,将序列分成三部分:比基数小的数序列,基数,比基数大的序列。不断重复对每个序列进行相同的处理,直到每个序列为空,则完成排序
#!/usr/bin/env python
# -*- coding: utf-8 -*- def quick_sort(data_source):
length = len(data_source)
if length == 0:
return []
else:
left = []
right = []
for i in range(1, length):
if data_source[0] > data_source[i]:
left.append(data_source[i])
else:
right.append(data_source[i])
return quick_sort(left) + [data_source[0]] + quick_sort(right) if __name__ == '__main__':
test_array = [1, 3, 5, 23, 75, 34, 456, 86, 22, 74, 37, 5, 34]
print quick_sort(test_array)
python 常见排序实例的更多相关文章
- python常见排序算法解析
python——常见排序算法解析 算法是程序员的灵魂. 下面的博文是我整理的感觉还不错的算法实现 原理的理解是最重要的,我会常回来看看,并坚持每天刷leetcode 本篇主要实现九(八)大排序算法 ...
- python——常见排序算法解析
算法是程序员的灵魂. 下面的博文是我整理的感觉还不错的算法实现 原理的理解是最重要的,我会常回来看看,并坚持每天刷leetcode 本篇主要实现九(八)大排序算法,分别是冒泡排序,插入排序,选择排序, ...
- 常见排序算法-Python实现
常见排序算法-Python实现 python 排序 算法 1.二分法 python 32行 right = length- : ] ): test_list = [,,,,,, ...
- 【python库模块】Python subprocess模块功能与常见用法实例详解
前言 这篇文章主要介绍了Python subprocess模块功能与常见用法,结合实例形式详细分析了subprocess模块功能.常用函数相关使用技巧. 参考 1. Python subprocess ...
- Python中对列表排序实例
Python中对列表排序实例 发布时间:2015-01-04 09:01:50 投稿:junjie 这篇文章主要介绍了Python中对列表排序实例,本文给出了9个List的排序实例,需要的朋友可以参考 ...
- python 的常见排序算法实现
python 的常见排序算法实现 参考以下链接:https://www.cnblogs.com/shiluoliming/p/6740585.html 算法(Algorithm)是指解题方案的准确而完 ...
- Python自定义排序及我实际遇到的一些题目实例
写在前面,本文主要介绍Python基础排序和自定义排序的一些规则,如果都比较熟悉,可以直接翻到第三节,看下实际的笔试面试题中关于自定义排序的应用. 一.基础排序 排序是比较基础的算法,与很多语言一样, ...
- Python之路【第二十四篇】Python算法排序一
什么是算法 1.什么是算法 算法(algorithm):就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为输出.简单来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果. ...
- Python常见的错误汇总
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 错误: [错误分析]第二个参数必须为类,否则会报TypeError,所以正确的应 ...
随机推荐
- Java设计模式(七) 模板模式-使用钩子
1,模板类 package com.pattern.template; public abstract class CaffeineBeverageWithHook { void prepareRec ...
- nginx之location
1locations简介 location的主要作用就是根据用户请求的uri来执行不同的应用. 2location的语法 location [=|~|~*|^~|@] uri{...........} ...
- zabbix的使用
1,zabbix运行流程 2功能特性 1数据收集 2灵活触发器 3高度可定制告警 4实时绘图功能 5web监控能力 6多种可视化展示 7历史数据存储 8配置容易 9API功能 10.......... ...
- html5的一些表单属性。
<pre>input属性:placeholder:输入框的默认值,向用户显示描述性说明文字或者提示信息 autocomplete:值为on和off..on则代表当该字段填写并提交后再返回该 ...
- 北京Java培训机构哪个好
又是一年暑期生活的来临,对于即将走出校园的实习生而言,培训潮与就业潮不约而至,培训行业的就业课程开班也如火如荼地进行着. 一直以来,计算机专业的毕业生都会作为一股庞大的生力军涌入社会各个岗位.就目前的 ...
- C#6.0新特性的尝试
由于项目升级到了.NetFramework 4.6.1,开发工具转向了vs2015,趁机尝试下C#6.0.结果在网上搜的一些教程总结的不是太完整,有的代码随着vs正式版的发布也有所修改.那些个教程也没 ...
- win7 系统无法复制粘贴解决方案
用远程桌面登陆服务器不能在本机和远程服务器之间粘贴文本了,即不能从本机复制文本粘贴到服务器,也不能从服务器复制文本粘贴到本机. 以下是解决方法之一,试了几次都很管用户:在服务器上打开任务管理器,查看进 ...
- IE/FF/Chrome下document.documentElement和document.body的 scrollHeight/scrollTop/clientHeight
IEdocument.documentElement.scrollHeight 浏览器所有内容高度 ,document.body.scrollHeight 浏览器所有内容高度document.do ...
- PHOG特征
PHOG特征 2016年7月13日 21:07:57 什么是PHOG PHOG是Pyramid HOG(pyramid histogram of oriented gradient)的简称,是在图像尺 ...
- Android成长日记-数据存储之SQLite[1]
[SQLite简介] SQLite是R.Richard Hipp用C语言编写的开源嵌入式数据库引擎.它支持大多数的SQL92标准,并且可以在所有主要的操作系统上运行 ---支持高达2TB大小的数据库: ...