【python,排序】几种常用的排序算法,使用python实现
1. 选择排序
--
--
def selectSort(l):
for i in range(len(l)):
j = i + 1
t_min = l[i]
loc_min = i
for j in range(j,len(l)):
if l[j] < t_min:
t_min = l[j]
loc_min = j
if loc_min != i:
t = l[i]
l[i] = t_min
l[loc_min] = t
2. 冒泡排序
--
--
def bubbleSort(l):
for i in range(len(l)-1,1,-1):
for j in range(i):
if l[j] > l[j+1]:
t = l[j+1]
l[j+1] = l[j]
l[j] = t
3. 插入排序
--
--
def insertSort(param):
p_len = len(param)
for i in range(1,p_len):
key = param[i]
#for j in range(1,i+1)[::-1]:
for j in range(i,0,-1):
#if j>0 and key < param[j-1]:
if key < param[j-1]:
param[j] = param[j-1]
param[j-1] = key
4. 桶排序
--
--
def bucketSort(l):
min_,max_ = min_max(l)
bucket_len = max_ - min_ + 1
bucketList = [0] * bucket_len
rList = []
for e in l:
bucketList[e-min_] += 1 for i in range(bucket_len):
if bucketList[i] != 0:
for j in range(bucketList[i]):
rList.append(i + min_)
return rList def min_max(l):
min_ = max_ = l[0] for e in l:
if min_ > e:
min_ = e
if max_ < e:
max_ = e
return min_,max_
【python,排序】几种常用的排序算法,使用python实现的更多相关文章
- C语言几种常用的排序算法
/* ============================================================================= 相关知识介绍(所有定义只为帮助读者理解 ...
- Python之几种常用模块
模块 注意事项: 所有的模块导入都应该尽量往上写 内置模块 扩展模块 自定义模块 模块不会重复被导入 : sys.moudles 从哪儿导入模块 : sys.path import import 模块 ...
- 二、python 中五种常用的数据类型
一.字符串 单引号定义: str1 = 'hello' 双引号定义: str1 = "hello" 三引号定义:""" 人生苦短, 我用python! ...
- 用python介绍4种常用的单链表翻转的方法
这里给出了4种4种常用的单链表翻转的方法,分别是: 开辟辅助数组,新建表头反转,就地反转,递归反转 # -*- coding: utf-8 -*- ''' 链表逆序 ''' class ListNod ...
- Python实现几种简单的排序算法
一.冒泡排序 概念:为一个无序的列表排成有序的 实现过程描述:(升序) 1.比较相邻的元素,如果第一个比第二个大,就交换他们的位置 2.对每一对相邻元素重复1的工作,从开始第一队到最后一对,最后结束的 ...
- python中几种常用的数据类型
1.字典 字典的创建: dict1=dict((('name','PIG'),)),其中第一层()代表里面的内容是dict函数的输入参数.第二层和第三层代表字典中的各元素,也就是key和value组合 ...
- 三种方法实现PCA算法(Python)
主成分分析,即Principal Component Analysis(PCA),是多元统计中的重要内容,也广泛应用于机器学习和其它领域.它的主要作用是对高维数据进行降维.PCA把原先的n个特征用数目 ...
- 两种常用的全排列算法(java)
问题:给出一个字符串,输出所有可能的排列. 全排列有多种算法,此处仅介绍常用的两种:字典序法和递归法. 1.字典序法: 如何计算字符串的下一个排列了?来考虑"926520"这个字符 ...
- Python使用三种方法实现PCA算法[转]
主成分分析(PCA) vs 多元判别式分析(MDA) PCA和MDA都是线性变换的方法,二者关系密切.在PCA中,我们寻找数据集中最大化方差的成分,在MDA中,我们对类间最大散布的方向更感兴趣. 一句 ...
随机推荐
- 做 fzu oj 1106 题目学到的
题目如下 这道题的意识就是给一个数问是否可以又阶乘之和构成,而难点主要是在于如果是7的话就是1!+3!,并不是单纯的从1的阶乘开始加,而是没顺序的,所以这题就得用到递归. (大概就是函数自己调用函数自 ...
- apiCode/1/1.1/1.1.1
public abstract class myClass { private string id = ""; private string name = "" ...
- 分享一下jQuery UI的地址
jQuery EasyUI: http://www.jeasyui.com/ DWZ: http://j-ui.com/ Liger UI: http://www.ligerui.com/ Liger ...
- Spring中使用Hibernate
在context中定义DataSource,创建SessionFactoy,设置参数: DAO类继承HibernateDaoSupport,实现具体接口,从中获得HibernateTemplate进行 ...
- [ASP.NET]更简单的方法:FormsAuthentication登录ReturnUrl使用绝对路径
转自:http://www.cnblogs.com/dudu/p/formsauthentication-returnurl-absoluteuri.html [ASP.NET]更简单的方法:Form ...
- jQuery Attributes vs. Properties
Attributes vs. Properties attributes和properties之间的差异在特定情况下是很重要.jQuery 1.6之前 ,.attr()方法在取某些 attribute ...
- 基本的TCP编程
int socket(int family,int type,int protocol); family: AF_INET ipv4协议 AF_INET6 ipv6协议 AF_LOCAL unix域协 ...
- gif动态图片去白边,杂边
(从已经死了一次又一次终于挂掉的百度空间人工抢救出来的,发表日期2014-05-30)
- js 格式化数字
http://www.jb51.net/article/61585.htm 这篇文章主要介绍了JS实现的4种数字千位符格式化方法分享,本文给出了4种千分位格式化方法并对它们的性能做了比较,需要的朋友可 ...
- WPF中的ControlTemplate(控件模板)(转)
原文地址 http://www.cnblogs.com/zhouyinhui/archive/2007/03/28/690993.html WPF中的ControlTemplate(控件模板) ...