python中-----数组中的排序
1.使用内置函数list.sort()
1 class Solution: 2 """ 3 @param: A: an integer array 4 @return: 5 """ 6 def sortIntegers(self, A): 7 A.sort()
2.使用sorted() 函数
1 sorted([5, 2, 3, 1, 4]) 2 [1, 2, 3, 4, 5]
注:
sorted()与list.sort()的不同
1)list.sort() 方法返回none,sorted()返回结果
2)list.sort() 方法只可以供列表使用,而 sorted() 函数可以接受任意可迭代对象(iterable)
1 sorted({1: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A'}) 2 [1, 2, 3, 4, 5]
3.插入排序法
1 def insert_sort(lists): 2 # 插入排序 3 count = len(lists) 4 for i in range(1, count): 5 key = lists[i] 6 j = i - 1 7 while j >= 0: 8 if lists[j] > key: 9 lists[j + 1] = lists[j] 10 lists[j] = key 11 j -= 1 12 return lists
适用于少量数据的排序,时间复杂度为O(n^2),逐个向前遍历
4.希尔排序
1 def shell_sort(lists): 2 # 希尔排序 3 count = len(lists) 4 step = 2 5 group = count / step 6 while group > 0: 7 for i in range(0, group): 8 j = i + group 9 while j < count: 10 k = j - group 11 key = lists[j] 12 while k >= 0: 13 if lists[k] > key: 14 lists[k + group] = lists[k] 15 lists[k] = key 16 k -= group 17 j += group 18 group /= step 19 return lists
首先增量为2,分成len()/2组,两两比较
然后减小增量分成len()/2/2组,每组内比较
直到分成一组,排序完成
其中以 插入排序+分组 实现
时间复杂度O(n^1.3)
5.冒泡排序
1 def bubble_sort(lists): 2 # 冒泡排序 3 count = len(lists) 4 for i in range(0, count): 5 for j in range(i + 1, count): 6 if lists[i] > lists[j]: 7 lists[i], lists[j] = lists[j], lists[i] 8 return lists
一次比较两个元素,时间复杂度O(n)
6.快速排序
1 def quick_sort(lists, left, right): 2 # 快速排序 3 if left >= right: 4 return lists 5 key = lists[left] 6 low = left 7 high = right 8 while left < right: 9 while left < right and lists[right] >= key: 10 right -= 1 11 lists[left] = lists[right] 12 while left < right and lists[left] <= key: 13 left += 1 14 lists[right] = lists[left] 15 lists[right] = key 16 quick_sort(lists, low, left - 1) 17 quick_sort(lists, left + 1, high) 18 return lists
low = left;high = right; 将基准数挖出形成第一个坑key。
right --由后向前找比它小的数,找到后挖出此数填前一个坑key中。
left ++由前向后找比它大的数,找到后也挖出此数填到前一个坑key中。
再重复执行2,3二步,直到left=right,将基准数填入a[i]中。
-----------------------------------------------------------------------------------存疑
7.直接选择排序
1 def select_sort(lists): 2 # 选择排序 3 count = len(lists) 4 for i in range(0, count): 5 min = i 6 for j in range(i + 1, count): 7 if lists[min] > lists[j]: 8 min = j 9 lists[min], lists[i] = lists[i], lists[min] 10 return lists
先把数列中最小的一个数放在第一个位置,再遍历第二小的数放在第二个位置,以此类推
堆排序,归并排序,基数排序存疑,以后再看
相关连接:
http://blog.jobbole.com/11745/
视觉直观感受 7 种常用的排序算法
http://python.jobbole.com/82270/
八大排序算法的python实现
转载于:https://www.cnblogs.com/xnwjx/p/8352676.html
python中-----数组中的排序相关推荐
- python统计数组中出现次数最多的元素
python查找数组中出现次数最多的元素 方法1-np.argmax(np.bincount()) array = [0,1,2,2,3,4,4,4,5,6] print(np.bincount(ar ...
- js中数组反向、排序reverse、sort
全栈工程师开发手册 (作者:栾鹏) js系列教程1-数组操作全解 js中数组反向.排序 数组反向使用reverse函数,数组排序使用sort函数,排序函数可以传入比较函数,也可以修改数组圆形,自定义添 ...
- python有序数组中删除元素_python刷LeetCode:26. 删除排序数组中的重复项
题目描述: 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成 ...
- 数组中查找並返回数组_用Python查找数组中出现奇数次的那个数字
有一个数组,其中的数都是以偶数次的形式出现,只有一个数出现的次数为奇数次,要求找出这个出现次数为奇数次的数. 集合+统计 解题思路 最简单能想到的,效率不高.利用集合的特性,通过 Python 的 s ...
- python字符串数组中最短的_python求解数组中两个字符串的最小距离
题目: 给定一个数组 strs,其中的数据都是字符串,给定两个字符串 str1,str2.如果这两个字符串都在 strs数组中,就返回它们之间的最小距离:如果其中任何一个不在里面,则返回 -1:如果两 ...
- python查找数组中出现次数最多的元素
方法1-np.argmax(np.bincount()) 看一个例子 array = [0,1,2,2,3,4,4,4,5,6] print(np.bincount(array)) print(np. ...
- python获取数组中最多的元素
获取数组中数量最多的元素,也就是最频繁的那个元素,方法有很多,下面是3种最简单的: 1.用max函数 sample = [1,2,3,3,3,4,5,5] max(set(sample), key=s ...
- python获取数组中大于某一阈值的那些索引值_Python NumPy 高级索引——整数组索引、布尔索引及花式索引...
NumPy 除了之前文章中介绍的用整数和切片的索引外,数组还可以由整数数组索引.布尔索引及花式索引. 整数数组索引 整数索引有助于基于 N 维索引来获取数组中任意元素.每个整数数组表示该维度的下标值. ...
- python判断数组中是否有重复元素_python经典面试算法题4.1:如何找出数组中唯一的重复元素...
本题目摘自<Python程序员面试算法宝典>,我会每天做一道这本书上的题目,并分享出来,统一放在我博客内,收集在一个分类中. [百度面试题] 难度系数:⭐⭐⭐ 考察频率:⭐⭐⭐⭐ 题目描述 ...
- Python打印输出数组中全部元素的方法
学习Python的人都知道数组是最常用的的数据类型,为了保证程序的正确性,需要调试程序. 因此,需要在程序中控制台中打印数组的全部元素,如果数组的容量较小,例如 只含有10个元素,采用print命令或 ...
最新文章
- 使用ssh连接gitHub
- 计算机组成原理的判断题,2《计算机组成原理A》判断题
- ImportError cannot import name BytesIO when import caffe
- 蓝色三角_梅山!长三角唯一近海蓝色海湾成网红打卡地
- 云服务器搭建代挂,服务器上搭建个人博客
- linux启动顺序怎么修改,怎样修改启动顺序?
- 利用 apache ab 测试服务器性能
- Qt:Qt实现飞秋拦截助手—介绍
- 设计模式--单例模式--Java实现
- android 高质量游戏,你玩过几款?2013年度十大安卓热门游戏大盘点
- 修改 MyEclipse 编辑区域背景颜色
- mind map 思维导图
- Postgresql - cursor介绍
- C讲坛之猜数字游戏的实现
- html显示当前小时分钟秒秋,北语18秋《网页制作》作业1234
- python 利用递归算法来完成计算乘阶、斐波那契数列、汉诺塔
- 骁龙778g4g和5g区别
- python德巴赫猜想_python实现哥德巴赫猜想(任何大于或者等于6的整数都可以写成2个素数之和)...
- Java抽奖小游戏(包含代码)
- Matlab演奏天空之城
热门文章
- new运算符与malloc函数区别
- 嵌入式系统——曼彻斯特编码
- 局域网访问虚拟机服务器桥接,虚拟机让局域网访问的方法---桥接模式
- 【手把手教你全文检索】Lucene索引的【增、删、改、查】
- javascript中的this指向问题总结
- Nancy基于JwtBearer认证的使用与实现
- java GC 参数
- JVM飙高排查脚本-结构分析
- android:layout_height、android:layout_width、android:height、android:width的关系与区别
- eclipse中创建最简单的maven结构的项目