以下代码均为python3版本的代码 【转自】http://www.kuqin.com/shuoit/20150702/346879.html 稍有修改 mark down ...
冒泡排序 冒泡排序 英语:Bubble Sort 是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢 浮 到数列的顶端。 冒泡排序算法的运作如下: 比较相邻的元素。如果第一个比第二个大 升序 ,就交换他们两个。 对每一对相邻元 ...
2018-07-12 11:06 1 784 推荐指数:
以下代码均为python3版本的代码 【转自】http://www.kuqin.com/shuoit/20150702/346879.html 稍有修改 mark down ...
最近一段时间学习了python,发现python真是个强大,强大到和Matlab相媲美。为了熟悉python,将之前的各种排序算法用python实现了一下。 常用的时间复杂度为O(n^2)的排序算法有冒泡排序,插入排序和选择排序,时间复杂度为O(nlog2(n))的算法有快速排序,归并排序 ...
一、链表排序 1、归并排序(递归版) 这个算法要采用递归,空间复杂度没办法达到O(n),时间复杂度为O(nlog(n) 2、快速排序 这个算法比归并排序复杂,速度比归并排序快50%左右,但是没看懂,以后再细细研究 3、投机取巧法(但是速度真的很快,leetcode打败98.59 ...
堆满足的条件:1,是一颗完全二叉树。2,大根堆:父节点大于各个孩子节点。每个节点都满足这个道理。小根堆同理。 parent = (i-1)/2 #i为当前节点 left = 2*i+1 r ...
采用分治法: 分割:递归地把当前序列平均分割成两半。 集成:在保持元素顺序的同时将上一步得到的子序列集成到一起(归并)。 归并操作(归并算法),指的是将两个已经排序的序列合并成一个序列的操作。归并排序算法依赖归并操作。 递归法(Top-down) 1.申请空间,使其大小为两个已经排序序列 ...
通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序。 快速排序算法的工作原理如下: 1. 从数列中挑出一个元素,称为"基准"(pivot)。 2. 重新排序数列,所有元素比基准值小的摆放在基准前面 ...
1、 算法描述: 1.先从数列中取出一个数作为基准数。 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。 3.再对左右区间重复第二步,直到各区间只有一个数。 2、python代码 结果: [8, 10, 9, 6, 4, 16, 5, 13 ...