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,所以正确的应 ...
随机推荐
- iOS开发中的错误整理,再一次整理通过通知中心来处理键盘,一定记得最后关闭通知中心
一.打开通知中心,监听键盘的显示与隐藏 二.最后记得将监听通知的对象移除
- 哈希 poj 1480
计算可能的数目 a3*x3^3+a4*x4^3+a5*x5^5=-(a1*x1^3+a2*x2^3); 列举右边的 结果存到数组 z[i] 和为i的右边等式的数目 如果和小于0 +2500000 ...
- 网页提示[Not allowed to load local resource: file://XXXX]错误
网页通过http 访问时, 点击打开文件的link.在Chrome 中会报 Not allowed to load local resource: file// XXXX 的错误 <!--Add ...
- Jquery-选择框点击勾选或者取消
1:单选框,直接定位到属性名称 $(document).ready(function(){ var old = null; //用来保存原来的对象 $("input[name='sex']& ...
- c#如何使输入数据类型限制,C#如何添加限制
验证n位的数字:^\d{n}$ ,例如要输6位数字,不能多也不能少: ^\d{6}$ 验证数字的正则表达式集 验证数字:^[0-9]*$验证n位的数字:^\d{n}$验证至少n位数字:^\d{n,}$ ...
- 面试经验(SG)
(1)给定一个字符串,"hello world high quality",去除里面的字符'h',然后返回一个新的字符串. package niukewang; public cl ...
- 【Codeforces 707A】Brain's Photos 水题
黑白灰都是#Black&White #include <cstdio> int n,m; int main() { scanf("%d%d",&n,&a ...
- 如何提高redmine的访问速度
刚开始使用redmine时 方法一: 可以采用nginx+passenger的方式来驱动redmine提升访问速度,但是在新建问题或更新问题时变得非常慢,这是因为在新建问题和更新问题时会发送邮件,而且 ...
- BZOJ 4144: [AMPPZ2014]Petrol
4144: [AMPPZ2014]Petrol Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 457 Solved: 170[Submit][Sta ...
- 【bzoj3572】 世界树
http://www.lydsy.com/JudgeOnline/problem.php?id=3572 (题目链接) 题意 给出一棵n个节点的树,q次询问,每次给出k个关键点.规定对于树上每个节点归 ...