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