数据结构与算法
DataLiu
大数据技术成长记
展开
-
数据结构与算法----归并排序与快速排序(Python版)
一、归并排序Merge Sort ❖下面我们来看看分治策略在排序中的应用 ❖归并排序是递归算法,思路是将数据表持续分裂为两半,对两半分别进行归并排序 递归的基本结束条件是:数据表仅有1个数据项,自然是排好序的; 缩小规模:将数据表分裂为相等的两半,规模减为原来的二分之一; 调用自身:将两半分别调用自身排序,然后将分别排好序的两半进行归并,得到排好序的数据表 源码: def m...原创 2020-03-21 13:37:55 · 349 阅读 · 0 评论 -
数据结构与算法----插入排序与Shell排序(Python版)
一、插入排序Insertion Sort ❖插入排序时间复杂度仍然是O(n2),但算法思路与冒泡排序、选择排序不同 ❖插入排序维持一个已排好序的子列表,其位置始终在列表的前部,然后逐步扩大这个子列表直到全表 ❖第1趟,子列表仅包含第1个数据项,将第2个数据项作为“新项”插入到子列表的合适位置中,这样已排序的子列表就包含了2个数据项 ❖第2趟,再继续将第3个数据项跟前2个数据项比对,并移动比...原创 2020-03-20 23:57:27 · 339 阅读 · 0 评论 -
数据结构预算法----冒泡排序与选择排序(Python版)
冒泡排序Bubble Sort ❖冒泡排序的算法思路在于对无序表进行多趟比较交换, ❖每趟包括了多次两两相邻比较,并将逆序的数据项互换位置,最终能将本趟的最大项就位 ❖经过n-1趟比较交换,实现整表排序 ❖每趟的过程类似于“气泡”在水中不断上浮到水面的经过 ❖第1趟比较交换,共有n-1对相邻数据进行比较 一旦经过最大项,则最大项会一路交换到达最后一项 ❖第2趟比较交换时,最大项已经就...原创 2020-03-20 22:31:03 · 249 阅读 · 0 评论 -
数据结构与算法----二分查找(Python版)
❖在顺序查找中,如果第1个数据项不匹配查找项的话,那最多还有n-1个待比对的数据项 ❖那么,有没有方法能利用有序表的特性,迅速缩小待比对数据项的范围呢? ❖我们从列表中间开始比对! 如果列表中间的项匹配查找项,则查找结束如果不匹配,那么就有两种情况: • 列表中间项比查找项大,那么查找项只可能出现在前半部分 • 列表中间项比查找项小,那么查找项只可能出现在后半部分 无论如何,我们都会将...原创 2020-03-19 22:52:56 · 364 阅读 · 0 评论 -
数据结构与算法----顺序查找(Python版)
一、顺序查找Sequential Search ❖如果数据项保存在如列表这样的集合中,我们会称这些数据项具有线性或者顺序关系。 ❖在Python List中,这些数据项的存储位置称为下标(index),这些下标都是有序的整数。 ❖通过下标,我们就可以按照顺序来访问和查找数据项,这种技术称为“顺序查找” ❖要确定列表中是否存在需要查找的数据项 首先从列表的第1个数据项开始,按照下标增长的顺...原创 2020-03-19 22:09:48 · 1388 阅读 · 0 评论 -
数据结构与算法----递归算法(Python版)
一、整数转换为任意进制 ❖我们用最熟悉的十进制分析下这个问题 十进制有十个不同符号:convString ="0123456789" 比十小的整数,转换成十进制,直接查表就可以 了:convString[n] 想办法把比十大的整数,拆成一系列比十小的整数,逐个查表,比如七百六十九,拆成七、六、九,查表得到769就可以了 ❖所以,在递归三定律里,我们找到了“基 本结束条件”,就是小于十...原创 2020-03-19 21:46:02 · 293 阅读 · 0 评论