数据结构
逐步掌握数据结构算法原理,提高代码能力
LN✌✊
这个作者很懒,什么都没留下…
展开
-
查找排序相关面试题
```pythondef isAnagram(s,t): dice1 = {} dice2 = {} for ch in s: dice1[ch] = dice1.get(ch,0) + 1 for ch in t: dice2[ch] = dice2.get(ch,0) + 1 return dice1 == dice2print(isAnagram('rat', 'car'))原创 2021-10-20 10:52:54 · 58 阅读 · 0 评论 -
基数排序python
def radix_sort(li): max_num = max(li) it = 0 while 10**it <= max_num: buckets = [[] for _ in range(10)] for var in li: digit = (var // 10 ** it) % 10 buckets[digit].append(var) li.clear() .原创 2021-10-19 19:50:29 · 92 阅读 · 0 评论 -
桶排序python
def bucket_sort(li,n=100,max_num=10000): buckets = [[] for _ in range(n)] # 创建桶 for var in li: i = min(var // (max_num // n), n-1) # i表示var放到几号桶里 buckets[i].append(var) for j in range(len(buckets[i])-1,0,-1): i..原创 2021-10-19 17:01:34 · 72 阅读 · 0 评论 -
计数排序python代码
def count_sort(li,max_count=100): count = [0 for _ in range(max_count+1)] for val in li: count[val]+=1 li.clear() for ind,val in enumerate(count): for i in range(val): li.append(ind)import randomli = [random..原创 2021-10-19 15:42:06 · 135 阅读 · 0 评论 -
希尔排序及python代码
希尔排序def insert_sort_gap(li,gap): for i in range(gap,len(li)): # i表示摸到的牌的下标 tmp = li[i] j = i - gap # j表示手里牌的下标 while j>=0 and li[j]>tmp: li[j+gap] = li[j] j-=gap li[j+gap] = tmpdef shell_原创 2021-10-18 19:50:37 · 243 阅读 · 0 评论 -
归并及python代码
归并排序def merge(li,low,mid,high): i = low j = mid + 1 ltmp = [] while i<=mid and j<=high: if li[i]<li[j]: ltmp.append(li[i]) i+=1 else: ltmp.append(li[j]) j+=1 whi原创 2021-10-18 16:45:23 · 50 阅读 · 0 评论 -
堆排序及python代码
堆排序过程原创 2021-10-17 21:37:10 · 61 阅读 · 0 评论 -
快速排序及python代码
快速排序的原理:1.列表最左边的元素归位2.递归def partition(data_list,left,right): temp = data_list[left] while left < right: while left < right and data_list[right] >= temp: right -= 1 data_list[left] = data_list[right]原创 2021-10-09 17:50:44 · 47 阅读 · 0 评论 -
插入排序及代码
插入排序def insert_sort(li): for i in range(1,len(li)): # i表示摸到的牌的下标 tmp = li[i] j = i-1 # j指的是手里的牌的下标 while j>=0 and li[j]>tmp: li[j+1] = li[j] j -= 1 li[j+1] = tmp li = [1,4,7,2,8原创 2021-09-27 09:28:35 · 56 阅读 · 0 评论 -
选择排序及python
原理1.一趟排序记录最小的数,放到第一位2.算法关键点:有序区和无序区、无序区最小数的位置def select_sort(li): for i in range(len(li)-1): min_val = i for j in range(i+1,len(li)): if li[j]<li[min_val]: min_val = j li[i],li[min_val] = li[min原创 2021-09-26 21:00:55 · 48 阅读 · 0 评论 -
冒泡排序及python代码
原版列表每两个相邻的数,如果前面比后面大,则交换这两个数一趟排序完成后,则无序区减少一个数,有序区增加一个数代码关键点:趟,无序区范围def bubble_sort(li): for i in range(len(li)-1): for j in range(len(li)-i-1): if li[j]>li[j+1]: li[j], li[j+1] = li[j+1], li[j] print原创 2021-09-26 20:04:01 · 199 阅读 · 0 评论 -
列表排序算法
排序:将一组“无序”的记录序列调整为“有序”的记录序列列表排序:将无序列表变为有序列表输入:列表输出:有序列表内置排序函数:sort()原创 2021-09-25 09:27:15 · 189 阅读 · 0 评论 -
顺序查找与二分查找
查找查找:在一些数据元素中,通过一定的方法与给定的关键字相同的数据元素的过程。输入:列表,待查找元素输出:元素下标(未找到的元素返回None或者-1)内置列表查找函数:index()顺序查找顺序查找:从列表第一个元素开始,顺序进行搜索,直到找到元素或者搜索到列表的最后一个元素。def linear_search(data_set,var): for i in range(len(data_set)): if data_set[i] == var:原创 2021-09-25 08:46:54 · 52 阅读 · 0 评论 -
递归及汉诺塔
递归的两个条件调用自身结束条件例子1def func1(x): if x>0: func1(x-1) print(x) 假设x = 3,输出结果为:1,2,3例子2def func2(x): if x>0: print(x) func2(x-1) 假设x = 3,输出结果为:3,2,1例子3 汉诺塔n = 2时:把小圆盘从A移动到B把大圆盘从A移动到C把小圆盘从B移动到C当盘子数n = k时,把前k-1个盘子当作一个小圆盘子原创 2021-09-24 16:43:23 · 70 阅读 · 0 评论 -
算法复杂度
这里写自定义目录标题欢迎使用Markdown编辑器新的改变~~功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用M原创 2021-09-24 15:13:12 · 68 阅读 · 0 评论