数据结构和算法
无面骑士
这个作者很懒,什么都没留下…
展开
-
详解 归并排序 、快速排序 (python实现)
归并排序思路:1.分解:把原数组不断的从中间分解,一直到只剩下一个元素为止2.合并:(1)创建一个临时数组,把当前两个分开的数组同时遍历(2)同时根据游标比较两个值的大小,把小的那个值放入临时数组,同时放入临时数组的那一个数组的游标往后移动一步,...原创 2020-04-28 18:17:03 · 318 阅读 · 0 评论 -
详解 冒泡排序、插入排序、选择排序
冒泡排序(BubbleSort)冒泡排序是基本的一种排序算法,实现思想是:从数组头到尾相邻的两个数两两比较,(从小到大排序)然后把值比较大的那个数一直放在比较两数中的后一个,这样大的数会一直的往数组后面走,直到该比较趟数的最后一个..整个过程那个大的数就像冒泡一样一直往后走..可能这就是名字的由来吧def bubbleSort(l): leght = len(l) fo...原创 2020-04-09 18:38:23 · 241 阅读 · 0 评论 -
顺序队列和链式队列的python实现
队列: 是一种受限的线性数据结构,先进先出,尾端插入头端出列顺序队列数组实现的队列: 1.在出队的时候整个队列的数据都往头迁移,这样的话时间复杂度就是O(n),入队的时间复杂度为O(1) 2.出队的时候直接从队头弹出一个数据,然后头指针往后迁移一步,这中出队操作的时间复杂度是O(1),但是入队就需要判定下是否队列满了,假如满了但是头指针在队头就扩充,假如头指针在队尾就做数据迁移但是这...原创 2020-04-03 14:26:45 · 681 阅读 · 0 评论 -
栈的几种应用场景
1.栈来实现表达式求值def match_number(sign,one_number,two_number): if sign == "*": return one_number * two_number elif sign == "/": return one_number / two_number elif sign == "...原创 2020-04-02 15:16:55 · 3321 阅读 · 0 评论 -
顺序栈、链式栈的python实现
栈是一种基本的数据结构,特点是只能在一端进行插入和删除操作,操作顺序是先进后出,后进先出 ;栈根据实现方式可以分为顺序栈和链式栈,顺序栈是用数组来实现,链式栈是用链表来实现顺序栈的出栈操作的只涉及尾端的弹出操作,时间复杂度为O(1),而入栈操作,当插入的操作在顺序栈的最大空间时,是O(1);当大于数组的长度时,这时候需要进行动态扩容,而动态扩容会重新申请一个更大的空间,并把原来的数据迁...原创 2020-04-02 14:57:13 · 930 阅读 · 0 评论 -
实现单链表和循环链表
单链表是一种线性数据结构,特点是:(1) .分配空间是不需要一块大的内存空间,因为每个节点都可以独立存储; (2) .从最后添加一个节点的时间复杂度为 O(1) , 增删查找操作的时间复杂度都为O(n)节点类 : class Node : def __...原创 2020-03-22 14:22:20 · 503 阅读 · 0 评论 -
回文数
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。方法一 : 把数字转化为字符串,再遍历一半的字符串 , 一边遍历一边比较,当出现不一样的返回def isPalindrome(x): if x < 0 : return False x = str(x) l = len(x) if l % 2 == 0: ...原创 2020-01-15 11:10:25 · 136 阅读 · 0 评论