自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

FanMLei的博客

努力成为一名GEEK!

  • 博客(16)
  • 收藏
  • 关注

原创 常用排序算法:基数排序

算法思路:步骤:1. 创建10个队列(0-9)                      2. 遍历每个数位,按照位数存入不同的桶中                      3. 然后再将桶中的元素依次取出,放回到原有列表中                      4. 继续执行上两步操作,直到列表中每个数的每一位都做完成排序                      5. 最后取...

2018-10-25 14:52:09 266

原创 常用排序算法:桶排序

算法思路:我们之前提到过计数排序,计数排序在某些情况下并不太适合,例如元素范围太大的情况,桶排序算是对于计数排序的一种改进,桶排序首先根据元素大小放置到不同的桶中,然后在对每一个桶内元素进行排序。例如数组[29,25,3,49,9,37,21,43],可以以10为区间来存放元素,具体操作如下图:关于“桶”这个结构怎么实现,在python里面可以用二位数组来表示[ [  ], [  ...

2018-10-24 23:58:39 376

原创 常用排序算法:计数排序

算法思路:顾名思义计数排序就是统计每个数出现的次数,例如给0-20范围内的数排序,首先建立一个长度为21的空数组,然后统计每个数出现的次数,再按照下标存入空数组中,例如1出现10次那么数组中的第二个元素为10 ,统计完所有的数之后呢在新建一个数组,在遍历之前存放次数的数组,按照个数往新数组中添加对应的数。以一个例子来说明[1,2,3,1,0,4,1,3,4,2,0,1,2,3,4]排序过程...

2018-10-24 17:39:25 384 1

原创 常用排序算法:希尔排序

算法思路:希尔排序算是插入排序的一种,是改进版的直接插入排序,和直接插入排序不同的是它是按组进行插入排序的。步骤如下:取一个整数d1 = n / 2,将元素分成d1个组,每组相邻元素之间距离d1,然后在每组内部进行直接插入排序。 取第二个整数d2 = d1 / 2再将元素分成d2个组,然后再在每组内部进行插入排序。 重复上面的步骤直到d = 1 的时候即所有元素在同一组进行插入排序...

2018-10-24 16:53:06 290

原创 常用排序算法:归并排序

算法思路:简单来说归并排序就是将两个有序的序列合并成一个完整的有序序列。具体步骤如下:           1. 选取序列1的第一个元素和序列2的第一个元素,较小的存放到新序列的第一位           2. 选序列1的第二个元素再和序列2的第一个元素比较,选较小的存放到新序列的低二位           3. 重复上述步骤直到序列1序列2没有下一个元素为止那么问题来了,一个无...

2018-10-24 03:08:27 257

原创 常用排序算法:堆排序

算法思路:堆:分为大根堆和小根堆       大根堆:一棵完全二叉树,满足任意一节点都比其孩子节点大。       小根堆:一棵完全二叉树,满足任意一节点都比其孩子节点小。堆排序流程: 构造堆 得到堆顶元素,为最大元素 去掉堆顶,将堆的最后一个元素放到堆顶,然后调整重新使堆有序 堆顶元素为第二大的元素 重复第三步直到堆变空例如以[4, 5, 3, 6, 1, 2 ]为...

2018-10-23 18:20:14 221

原创 常用排序算法:快速排序

算法思路快速排序差不多是面试中问的最多的一种排序算法了,快排是比较容易理解的,核心思路就是,选取一个数作为基准,将原来的列表分为两个部分,一部分全部小于这个基准数,另外一部分全部大于这个基准数,然后呢再按照这个方法对划分出来的两部分继续做同样的操作,直到无法划分的时候排序也就完成了。以数组[3,2,1,5,4,6]为例,其排序过程如下图所示。关于时间复杂度问题, 平均复杂度n log(...

2018-10-23 15:00:21 280

原创 常用排序算法:直接插入排序

算法思路插入排序就跟我们打扑克抽牌是一样的形式,每次新抽的牌插入到已有的有序牌中,是牌始终保持有序状态,例如[1,3, 2,4,0] 数组,先将1作为起始牌,下一张牌为3,第一趟完成后变成[1, 3]有序数组和[2,4,0]无序数组,接下来插入2,有序数组变成[1,2,3],无序数组变成[4,0],以此类推知道将所有的无序数组都插入完毕就能完成排序操作。插入排序算法适用于少量数据的排序,时...

2018-10-22 16:54:19 152

原创 常用排序算法:直接选择排序

直接选择排序算法思路:第 1 趟,在待排序记录 r1 ~ r[n]中选出最小的记录,将它与 r1 交换;第 2 趟, 在待排序记录 r2 ~ r[n]中选出最小的记录,将它与 r2 交换;以此类推,第 i 趟在待排序 记录 r[i] ~ r[n]中选出最小的记录,将它与 r[i]交换,使有序序列不断增长直到全部排序 完毕。例如[2, 4, 3, 1, 0],第一趟找到最小值为0,将0和第一...

2018-10-22 13:40:59 248

原创 常用排序算法:冒泡排序

冒泡排序思路:列表中的每两个相邻的数,如果前面比后面的大,则交换这两个数。直到列表变为有序的时候为止,例如下面这个列表           [ 2,  1,  3,  0,  7,  6,  5,  4]第一趟:                  第一步:列表的第一位和第二位比较:如果第一位大于第二位,则交换两者位置。由于2大于1,所以此时列表 为:[1,  2,  3,  0,  7...

2018-10-18 21:39:08 220

原创 Leet Code OJ 简单(三)

58.最后一个单词的长度  52msclass Solution: def lengthOfLastWord(self, s): """ :type s: str :rtype: int """ s = s.split(' ') while "" in s: s.r...

2018-10-18 20:44:57 222

原创 Leet Code OJ 简单(二)

20. 有效括号  48msclass Solution: def isValid(self, s): """ :type s: str :rtype: bool """ if len(s) % 2 : return False brackets = {'(': '...

2018-10-18 00:42:07 216

原创 Leet Code OJ 简单(一)

1.两数之和  3780msclass Solution(object): def twoSum(self, nums, target): """ :type nums: List[int] :type target: int :rtype: List[int] """ for i in ...

2018-10-16 20:09:29 297

原创 Python字典的实现原理

以下是自己的学习记录,算是一个总结。接下来会依次对下面问题做一个解答:    1. Python的dict和set为什么是无序的?    2. 为什么不是所有的python对象都可以用作dict的键和set中的元素要弄懂上面的问题,我们首先要了解Python内部是如何实现dict和set类型的。我们先来看看dict的内部结构,dict其实本质上是一个散列表(散列表即总有空白元素的数组,...

2018-10-12 10:49:37 3199

原创 list.sort方法和内置函数sorted

list.sort方法和内置函数sorted的异同list.sort方法和sorted函数都是对列表进行排序的,但是这两种方法也是有少许不同的,list.sort排序是在原有基础上进行的,不会生成返回一个新的list, 但是sorted函数则不同,他会产生一个新对象并返回。如下t = [1, 3, 4, 2, 5, 0]t1 = [1, 3, 4, 2, 5, 0]print(t.s...

2018-10-11 12:12:40 5844

原创 Git命令

1. git init初始化版本库2. git config --global user.name (your name) 配置 git config --global user.email (your email)3. git add (file name) 将文件放置到缓存区4. git commit -m (describe)将缓存区的文件提交到分支...

2018-10-09 10:55:27 163

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除