摘要: 链表(Linked List) 很多的教材都是用C语言实现链表,因为c有指针,可以很方便的控制内存,很方便就实现链表,其他的语言,则没那么方便,由于python是动态语言,可以直接把对象赋值给新的变量,于是在python一切皆为对象的原理上实现链表的各项操作。 在实现链表python类的属性和方法操 阅读全文
posted @ 2018-06-06 20:16 kumata 阅读(36709) 评论(3) 推荐(2) 编辑
摘要: 在前面的排序算法学习中,归并排序和快速排序就是用的分治法,分治法作为三大算法之一的,有非常多的应用例子。 分治法概念 分治法特征 第一条特征是绝大多数问题都可以满足的,因为问题的计算复杂性一般是随着问题规模的增加而增加; 第二条特征是应用分治法的前提它也是大多数问题可以满足的,此特征反映了递归思想的 阅读全文
posted @ 2018-06-05 17:34 kumata 阅读(6102) 评论(0) 推荐(0) 编辑
摘要: 承接上一篇:查找:顺序查找与二分法查找,将二分法更多详细的python实现解题写下笔记。 简单方法 改进方案:如果我要找一个数组中相同数字最前面的那个数字。比如lis = [1,2,2,2,2,3,3,5,6],用上面的代码会返回index为4,下面代码解决如何返回相同元素的最前一个 经典方法 下面 阅读全文
posted @ 2018-06-03 23:27 kumata 阅读(1453) 评论(0) 推荐(0) 编辑
摘要: 简介: 学习mysql环境为ubantu,下面记录一些基本的创建数据库和插入数据的口令 打开MySQL 服务并使用 root 登录: --打开 MySQL 服务 sudo service mysql start --使用 root 用户登录,密码为空 mysql -u root 如果我们前面已经用编 阅读全文
posted @ 2018-06-02 15:34 kumata 阅读(170100) 评论(0) 推荐(1) 编辑
摘要: 快速排序( Quick sort) 快速排序的基本思想:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行递归排序,以达到整个序列有序。 1.算法描述: 另一个分而治之 将数组划分为两个部分,然后独立地对部分进行排序: 首先选择一个 阅读全文
posted @ 2018-06-01 22:26 kumata 阅读(483) 评论(0) 推荐(0) 编辑
摘要: 归并排序( Merge sort),也成合并排序、二分排序 归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序 阅读全文
posted @ 2018-06-01 21:24 kumata 阅读(468) 评论(0) 推荐(0) 编辑
摘要: 计数排序( Count sort) 一个不需要比较的,类似于桶排序的线性时间排序算法。该算法是对已知数量范围的数组进行排序。其时间复杂度为O(n),适用于小范围集合或重复元素多的排序。计数排序是用来排序0到100之间的数字的最 好的算法。 1.算法描述: “抽屉原理” 找出待排序的数组中最大和最小的 阅读全文
posted @ 2018-06-01 18:40 kumata 阅读(386) 评论(0) 推荐(0) 编辑
摘要: 希尔排序( Shell sort) 插入排序的改进版本,其核心思想是将原数据集合分割成若干个子序列,然后再对子序列分别进行直接插入排序,使子序列基本有序,最后再对全体记录进行一次直接插入排序。 我的面向人类的理解:挑选间隔为k的数进行排序,然后不断缩小k,最终降到1,此时相当于插入排序。 1.算法描 阅读全文
posted @ 2018-05-31 23:44 kumata 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 插入排序( Insert sort) 通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入; 由于不需要全部都比较完,所以排序速度优于冒泡和选择排序。 #插入排序就像是斗地主摸牌 1.算法描述: 2.算法属性: 时间复杂度:O(n^2) 空间复杂度:O(1) 稳定性:稳定 阅读全文
posted @ 2018-05-31 23:18 kumata 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 选择排序( Selection sort) 1.算法描述: 通过n-i次关键字之间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1<=i<=n)个记录进行交换。 对尚未完成排序的所有元素,从头到尾比一遍,记录下最小的那个元素的下标,也就是该元素的位置, 把该元素交换到当前遍历的最前面。 阅读全文
posted @ 2018-05-31 22:21 kumata 阅读(195) 评论(0) 推荐(0) 编辑