python之排序算法
排序是每个语言都需要学会的,不管是c++、java还是python,套路都是类似的
python中也有自带的排序函数sort,直接使用也可
闲来无事写了几个排序算法,各不相同
1、每次遇到最小的数都交换
list1 = [56,34,87,3,59,10,3543,98] def sortList(listTest = None):
length = len(listTest)
for i in range(length):
for j in range(i+1,length):
if listTest[i] > listTest[j]:
listTest[i],listTest[j] = listTest[j],listTest[i] #直接交换
return listTest ls = sortList(list1)
print(ls)
这种方法会频繁进行交换操作
2、一次循环记录最小值的下标,一次循环只交换一次
list1 = [56,34,87,3,59,10,3543,98] def sortList(listTest = None):
length = len(listTest)
for i in range(length):
temp = i #记录最小值的下标
for j in range(i+1,length):
if listTest[temp] > listTest[j]:
temp = j
print(temp)
if temp != i: #如果第一个不是最小的,那么就交换
listTest[i],listTest[temp] = listTest[temp],listTest[i]
return listTest ls = sortList(list1)
print(ls)
这种就没有频繁交换了,但要每次记录最小值下标
3、不需要交换,使用新list记录最小值
list1 = [56,34,87,3,59,10,3543,98] def sortList(listTest =None):
length = len(listTest)
listTemp = [] #记录每次循环最小值
for i in range(length):
minTemp = listTest[0]
for j in range(1,length):
if minTemp > listTest[j]:
minTemp = listTest[j]
length -= 1
listTest.remove(minTemp) #删除最小值
listTemp.append(minTemp) #记录最小值
return listTemp ls = sortList(list1)
print(ls)
python之排序算法的更多相关文章
- Python之排序算法:快速排序与冒泡排序
Python之排序算法:快速排序与冒泡排序 转载请注明源地址:http://www.cnblogs.com/funnyzpc/p/7828610.html 入坑(简称IT)这一行也有些年头了,但自老师 ...
- python实现排序算法 时间复杂度、稳定性分析 冒泡排序、选择排序、插入排序、希尔排序
说到排序算法,就不得不提时间复杂度和稳定性! 其实一直对稳定性不是很理解,今天研究python实现排序算法的时候突然有了新的体会,一定要记录下来 稳定性: 稳定性指的是 当排序碰到两个相等数的时候,他 ...
- python常见排序算法解析
python——常见排序算法解析 算法是程序员的灵魂. 下面的博文是我整理的感觉还不错的算法实现 原理的理解是最重要的,我会常回来看看,并坚持每天刷leetcode 本篇主要实现九(八)大排序算法 ...
- 第四百一十五节,python常用排序算法学习
第四百一十五节,python常用排序算法学习 常用排序 名称 复杂度 说明 备注 冒泡排序Bubble Sort O(N*N) 将待排序的元素看作是竖着排列的“气泡”,较小的元素比较轻,从而要往上浮 ...
- Python实现排序算法之快速排序
Python实现排序算法:快速排序.冒泡排序.插入排序.选择排序.堆排序.归并排序和希尔排序 Python实现快速排序 原理 首先选取任意一个数据(通常选取数组的第一个数)作为关键数据,然后将所有比它 ...
- python 经典排序算法
python 经典排序算法 排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存.常见的内部排序算 ...
- Python 实现排序算法
排序算法 下面算法均是使用Python实现: 插入排序 原理:循环一次就移动一次元素到数组中正确的位置,通常使用在长度较小的数组的情况以及作为其它复杂排序算法的一部分,比如mergesort或quic ...
- python——常见排序算法解析
算法是程序员的灵魂. 下面的博文是我整理的感觉还不错的算法实现 原理的理解是最重要的,我会常回来看看,并坚持每天刷leetcode 本篇主要实现九(八)大排序算法,分别是冒泡排序,插入排序,选择排序, ...
- Python 八大排序算法速度比较
这篇文章并不是介绍排序算法原理的,纯粹是想比较一下各种排序算法在真实场景下的运行速度. 算法由 Python 实现,用到了一些语法糖,可能会和其他语言有些区别,仅当参考就好. 测试的数据是自动生成的, ...
随机推荐
- SVD及其在推荐系统中的作用
本文先从几何意义上对奇异值分解SVD进行简单介绍,然后分析了特征值分解与奇异值分解的区别与联系,最后用python实现将SVD应用于推荐系统. 1.SVD详解 SVD(singular value d ...
- Python的基本用法
---恢复内容开始--- 一.函数 1.1 默认参数 想要计算一个数x的n次方,可以定义如下的函数.但是有时候我们仅仅只需要计算x^2,所以只想使用一个参数即power(x),这时如果仍用如下代码会报 ...
- jquery 设置某div里面的内容为此div里面非img标签的内容
$('#div_1').html($('#div_1').children().not("img")); 要注意 <div id="#div_1"> ...
- cisco PBR
access-list 2000 permit ip 10.11.50.0 0.0.0.255 anyaccess-list 2001 permit ip 10.11.50.0 0.0.0.255 1 ...
- 890. Find and Replace Pattern找出匹配形式的单词
[抄题]: You have a list of words and a pattern, and you want to know which words in words matches the ...
- js中的instanceof运算符
概述 instanceof运算符用来判断一个构造函数的prototype属性所指向的对象是否存在另外一个要检测对象的原型链上 语法 obj instanceof Object;//true 实例obj ...
- 通过Solr所提供的Dataimporthandler实现数据源的导入
如需要使用到Solr中的dataimporthandler增量导入功能,则还需要引入两个所依赖的jar包,在上一篇随笔中所提到的下载的Solr项目文件solr-4.10.3\dist目录下可以找到所依 ...
- Linux 自动挂载硬盘的方法
每次重启后,都需要手动挂载硬盘( sudo mount ),非常不方便,使用一下步骤可以实现硬盘的自动挂载 第一步 获取硬盘的基本信息(UUID TYPE) sudo blkid 第二步 修改 / ...
- VirtualBox 克隆后 IP 地址相同(DHCP 分配),如何变更MAC以获取不同的IP?
由于需要做实验需要两个相同环境的虚拟机,在linux下使用virtualbox最小化安装centos6.0,并克隆了一个相同的,联网模式为桥接,修改配置文件之后重启网络发现二者的网络信息相同,所获取的 ...
- powershell获取windows子文件夹的大小
$startFolder = "E:\Migration\" $colItems = (Get-ChildItem $startFolder | Where-Object {$_. ...