![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构基础
小黄鸭zm
这个作者很懒,什么都没留下…
展开
-
python排序之归并排序
思想:先递归分解数组,再合并数组代码:def merge_sort(alist): n=len(alist) if n<=1: return alist mid=n//2 left_li=merge_sort(alist[:mid]) right_li=merge_sort(alist[mid:]) left_poin...原创 2018-11-07 10:11:48 · 173 阅读 · 0 评论 -
用递归解决背包问题
问题描述:一个背包里可以放入重量为weight的物品,现有n件物品的集合是S,其中物品的重量分别为w(0),w(1).......w(n-1)。问题是能否从中选出若干个物品,重量之和=weight,如果存在,这一个背包问题有解,不存在则无解考虑一:不选最后一个物品:如果f(weight,n-1)有解,则f(weight,n)有解考虑二:选最后一个物品:如果f(weight-w(n-1)...原创 2019-04-18 09:33:15 · 1842 阅读 · 0 评论 -
python 四则运算匹配
面完华为后满血复活的小黄鸭上线啦!思想:1、定义2个栈,一个压入数据,一个压入运算符2、定义优先级别: priority={'(':1,'+':3,'-':3,'*':5,'/':5}3、如果str[i]是数字,继续查看str[i+1] if str[i].isdigit(): # print('1') ...原创 2019-04-17 19:50:45 · 796 阅读 · 0 评论 -
哈希表
现在不懂没关系,积累多了就懂了。转自某个勤劳的小蜜蜂https://blog.csdn.net/qq_24642743/article/details/80412398还有一只:https://blog.csdn.net/yyyljw/article/details/80903391another:https://blog.csdn.net/tayanxunhua/article/de...转载 2019-03-29 10:41:41 · 266 阅读 · 0 评论 -
理解希尔排序的不稳定性
希尔排序是插入排序的改进先按一定的间隔将待排序的序列分组,每组进行插入排序 缩小间隔 希尔排序是按照不同步长对元素进行插入排序,当刚开始元素很无序的时候,步长最大,所以插入排序的元素个数很少,速度很快;当元素基本有序了,步长很小, 插入排序对于有序的序列效率很高。所以,希尔排序的时间复杂度会比O(n^2)好一些。由于多次插入排序,我们知道一次插入排序是稳定的,不会改变相同...原创 2019-03-13 18:44:28 · 10269 阅读 · 0 评论 -
理解选择排序的不稳定性
选择排序是给每个位置选择当前元素最小的,比如给第一个位置选择最小的,在剩余元素里面给第二个元素选择第二小的,依次类推,直到第n - 1个元素,第n个元素不用选择了,因为只剩下它一个最大的元素了。那么,在一趟选择,如果当前元素比一个元素小,而该小的元素又出现在一个和当前元素相等 的元素后面,那么交换后稳定性就被破坏了。比较拗口,举个例子,序列5 8 5 2 9,我们知道第一遍选择第1个...原创 2019-03-13 18:18:35 · 34147 阅读 · 14 评论 -
python 数据结构之单链表
今天是看书看的浑身难受的小黄鸭!!!!!!链表链表为什么会存在? 顺序表的构建需要预先知道数据大小来申请连续的存储空间,而在进行扩充存储时有需要进行数据搬迁,所以使用起来不是很灵活。 链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。链表的定义: 链表(linked list)是一种常见的基础数据结构,是一种线性表,但是不像顺序表...原创 2019-03-13 17:23:35 · 211 阅读 · 0 评论 -
HTTP状态码
转自某个勤劳的小蜜蜂:https://www.cnblogs.com/klb561/p/9205867.htmlHTTP状态码详解 HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码。它由 RFC 2616 规范定义的,并得到RFC 2518、RFC 2817、RFC 2295、RFC 2774、RFC 4918等规范扩展...转载 2019-03-12 18:45:18 · 815 阅读 · 0 评论 -
python排序之冒泡排序
冒泡排序思想:每次比较相邻两个元素,如果它们的顺序错误,就对换它们的位置。每一趟只能将一个元素归位,如果有n个元素需要进行排序,则需要将n-1个元素进行归位,即进行(n-1)躺操作,已经归位的不再比较。最优时间复杂度:O(n) 【表示便利一次没有发现任何可以交换的元素,排序结束】最坏时间复杂度:O(n*n)稳定性:稳定代码:def bubble_sort(alist)...原创 2018-11-07 08:41:02 · 464 阅读 · 0 评论 -
python排序之插入排序
插入排序思想:将一个数据插入到已经拍好序的有序数据中,从而得到一个新的有序序列代码:def insertion_sort(alist): n=len(alist) for i in range(1,n): while i>0: if alist[i]<alist[i-1]: a...原创 2018-11-07 09:24:22 · 249 阅读 · 0 评论 -
python排序之希尔排序
思想:插入排序的改进(分组插入排序)1:先安装一定的间隔将待排序的序列分组,每组内进行插入排序2:缩小间隔代码:def shell_sort(alist): n=len(alist) gap=n//2 # while gap>0: for i in range(gap,n): while i>...原创 2018-11-07 09:39:01 · 339 阅读 · 0 评论 -
python排序之快速排序
思想:通过一趟排序将要排序的数据分割成独立的两部分,然后再按照此方法对这两部分数据分别进行快速排序整个排序可以递归进行代码:def quick_sort(alist,first,last): if first>=last: return mid_value=alist[first] low=first high=last ...原创 2018-11-07 09:51:44 · 133 阅读 · 0 评论 -
python 二分查找
前提:有序序列代码:def binary_search(alist,item): '''递归法''' n=len(alist) if n>0: mid=n//2 if alist[mid]==item: return True elif alist[mid]>item: ...原创 2018-11-07 10:40:23 · 229 阅读 · 0 评论 -
连续子数组的最大和
方法一:遍历数组,遇到负和则抛弃之前的结果,重新积累,期间保留最大值# -*- coding:utf-8 -*-class Solution: def FindGreatestSumOfSubArray(self, array): # write code here if not array: return m...原创 2019-04-28 12:19:47 · 78 阅读 · 0 评论