使用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 常见排序实例的更多相关文章

  1. python常见排序算法解析

    python——常见排序算法解析   算法是程序员的灵魂. 下面的博文是我整理的感觉还不错的算法实现 原理的理解是最重要的,我会常回来看看,并坚持每天刷leetcode 本篇主要实现九(八)大排序算法 ...

  2. python——常见排序算法解析

    算法是程序员的灵魂. 下面的博文是我整理的感觉还不错的算法实现 原理的理解是最重要的,我会常回来看看,并坚持每天刷leetcode 本篇主要实现九(八)大排序算法,分别是冒泡排序,插入排序,选择排序, ...

  3. 常见排序算法-Python实现

    常见排序算法-Python实现 python 排序 算法 1.二分法     python    32行 right = length-  :  ]   ):  test_list = [,,,,,, ...

  4. 【python库模块】Python subprocess模块功能与常见用法实例详解

    前言 这篇文章主要介绍了Python subprocess模块功能与常见用法,结合实例形式详细分析了subprocess模块功能.常用函数相关使用技巧. 参考 1. Python subprocess ...

  5. Python中对列表排序实例

    Python中对列表排序实例 发布时间:2015-01-04 09:01:50 投稿:junjie 这篇文章主要介绍了Python中对列表排序实例,本文给出了9个List的排序实例,需要的朋友可以参考 ...

  6. python 的常见排序算法实现

    python 的常见排序算法实现 参考以下链接:https://www.cnblogs.com/shiluoliming/p/6740585.html 算法(Algorithm)是指解题方案的准确而完 ...

  7. Python自定义排序及我实际遇到的一些题目实例

    写在前面,本文主要介绍Python基础排序和自定义排序的一些规则,如果都比较熟悉,可以直接翻到第三节,看下实际的笔试面试题中关于自定义排序的应用. 一.基础排序 排序是比较基础的算法,与很多语言一样, ...

  8. Python之路【第二十四篇】Python算法排序一

    什么是算法 1.什么是算法 算法(algorithm):就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为输出.简单来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果. ...

  9. Python常见的错误汇总

    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 错误: [错误分析]第二个参数必须为类,否则会报TypeError,所以正确的应 ...

随机推荐

  1. hdu2888 二维RMQ

    Check Corners Time Limit: 2000/10000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  2. uva10870 矩阵

    f(n) = a1f(n − 1) + a2f(n − 2) + a3f(n − 3) + . . . + adf(n − d), for n > d, 可以用矩阵进行优化,直接构造矩阵,然后快 ...

  3. SSM三大框架(转发)

    转自:SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis) 使用SSM(Spring.SpringMVC和Mybatis)已经有三个多月了,项目在技术上已经没有什么难点了,基 ...

  4. servlet监听器Listener(理论+例子)

    Listener采用了观察者模式(24种模式之一),Listener是servlet的监听器,他可以监听客户端的请求.服务器端的操作等, 通过监听器,可以自动激发一些操作.比如:监听在线用户数量 当增 ...

  5. Python中remove,del和pop的区别

    以a=[1,2,3] 为例,似乎使用del, remove, pop一个元素2 之后 a都是为 [1,3], 如下:http://Novell.Me >>> a=[1,2,3] &g ...

  6. NameNode & DataNode

    NameNode类位于org.apache.hadoop.hdfs.server.namenode包下. NameNode serves as both directory namespace man ...

  7. C# .NET 使用第三方类库DotNetZip解压/压缩Zip文件

    dotNetZip on CodePlex: http://dotnetzip.codeplex.com/ 详细的可以看源代码……总之感觉比SharpZipLib好用.而且DotNetZip支持VB, ...

  8. SQL Server配置管理器的“别名”功能好处,实现内外网统一以及加了端口号导致的限制

    这里主要有两个别名,经过研究,最好两个都配置成一样的,减少排查. 操作: 点击[别名],右键[新建别名] 这里的别名能实现比如我一台远程服务器,加了端口的,如果要实现在SQL登录的时候,使用计算机名来 ...

  9. AutoIt3(AU3)开发的驱动备份工具

    项目相关地址 源码:https://github.com/easonjim/Backup_Driver bug提交:https://github.com/easonjim/Backup_Driver/ ...

  10. C/C++ Learning

    目录 1. C/C++中的关键字2. C/C++中的标识符3. 编译选项MD(d).MT(d)编译选项的区别4. C++类模板.函数模板5. C++修饰符6. 调用约定7. 错误处理8. 环境表 9. ...