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中-----数组中的排序相关推荐

  1. python统计数组中出现次数最多的元素

    python查找数组中出现次数最多的元素 方法1-np.argmax(np.bincount()) array = [0,1,2,2,3,4,4,4,5,6] print(np.bincount(ar ...

  2. js中数组反向、排序reverse、sort

    全栈工程师开发手册 (作者:栾鹏) js系列教程1-数组操作全解 js中数组反向.排序 数组反向使用reverse函数,数组排序使用sort函数,排序函数可以传入比较函数,也可以修改数组圆形,自定义添 ...

  3. python有序数组中删除元素_python刷LeetCode:26. 删除排序数组中的重复项

    题目描述: 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成 ...

  4. 数组中查找並返回数组_用Python查找数组中出现奇数次的那个数字

    有一个数组,其中的数都是以偶数次的形式出现,只有一个数出现的次数为奇数次,要求找出这个出现次数为奇数次的数. 集合+统计 解题思路 最简单能想到的,效率不高.利用集合的特性,通过 Python 的 s ...

  5. python字符串数组中最短的_python求解数组中两个字符串的最小距离

    题目: 给定一个数组 strs,其中的数据都是字符串,给定两个字符串 str1,str2.如果这两个字符串都在 strs数组中,就返回它们之间的最小距离:如果其中任何一个不在里面,则返回 -1:如果两 ...

  6. python查找数组中出现次数最多的元素

    方法1-np.argmax(np.bincount()) 看一个例子 array = [0,1,2,2,3,4,4,4,5,6] print(np.bincount(array)) print(np. ...

  7. python获取数组中最多的元素

    获取数组中数量最多的元素,也就是最频繁的那个元素,方法有很多,下面是3种最简单的: 1.用max函数 sample = [1,2,3,3,3,4,5,5] max(set(sample), key=s ...

  8. python获取数组中大于某一阈值的那些索引值_Python NumPy 高级索引——整数组索引、布尔索引及花式索引...

    NumPy 除了之前文章中介绍的用整数和切片的索引外,数组还可以由整数数组索引.布尔索引及花式索引. 整数数组索引 整数索引有助于基于 N 维索引来获取数组中任意元素.每个整数数组表示该维度的下标值. ...

  9. python判断数组中是否有重复元素_python经典面试算法题4.1:如何找出数组中唯一的重复元素...

    本题目摘自<Python程序员面试算法宝典>,我会每天做一道这本书上的题目,并分享出来,统一放在我博客内,收集在一个分类中. [百度面试题] 难度系数:⭐⭐⭐ 考察频率:⭐⭐⭐⭐ 题目描述 ...

  10. Python打印输出数组中全部元素的方法

    学习Python的人都知道数组是最常用的的数据类型,为了保证程序的正确性,需要调试程序. 因此,需要在程序中控制台中打印数组的全部元素,如果数组的容量较小,例如 只含有10个元素,采用print命令或 ...

最新文章

  1. 使用ssh连接gitHub
  2. 计算机组成原理的判断题,2《计算机组成原理A》判断题
  3. ImportError cannot import name BytesIO when import caffe
  4. 蓝色三角_梅山!长三角唯一近海蓝色海湾成网红打卡地
  5. 云服务器搭建代挂,服务器上搭建个人博客
  6. linux启动顺序怎么修改,怎样修改启动顺序?
  7. 利用 apache ab 测试服务器性能
  8. Qt:Qt实现飞秋拦截助手—介绍
  9. 设计模式--单例模式--Java实现
  10. android 高质量游戏,你玩过几款?2013年度十大安卓热门游戏大盘点
  11. 修改 MyEclipse 编辑区域背景颜色
  12. mind map 思维导图
  13. Postgresql - cursor介绍
  14. C讲坛之猜数字游戏的实现
  15. html显示当前小时分钟秒秋,北语18秋《网页制作》作业1234
  16. python 利用递归算法来完成计算乘阶、斐波那契数列、汉诺塔
  17. 骁龙778g4g和5g区别
  18. python德巴赫猜想_python实现哥德巴赫猜想(任何大于或者等于6的整数都可以写成2个素数之和)...
  19. Java抽奖小游戏(包含代码)
  20. Matlab演奏天空之城

热门文章

  1. new运算符与malloc函数区别
  2. 嵌入式系统——曼彻斯特编码
  3. 局域网访问虚拟机服务器桥接,虚拟机让局域网访问的方法---桥接模式
  4. 【手把手教你全文检索】Lucene索引的【增、删、改、查】
  5. javascript中的this指向问题总结
  6. Nancy基于JwtBearer认证的使用与实现
  7. java GC 参数
  8. JVM飙高排查脚本-结构分析
  9. android:layout_height、android:layout_width、android:height、android:width的关系与区别
  10. eclipse中创建最简单的maven结构的项目