摘要: 思路:[256,35,96,2,34,65,732,653,20] 对于一个数组,我们不再像插入排序那个把它当成两个部分, 而是引入一个gap,假设gap=4,就会有 256 34 20 35 65 96 732 2 653 分成了上面所示的4个子序列 对于这些子序列进行插入排序,即 20 34 2 阅读全文
posted @ 2020-05-17 10:20 Roronoa-Zoro 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 思路:跟选择排序一样,将数据分为两部分,将第一个元素为固定的,有序的,剩下的元素都是无序的,将无序的第一个元素和之前有序的部分进行比较,变成有序的,以此类推 [25, 66,85,2,60] [25,66, 85,2,60] [25,66,85 2,60] [2,25,66,85 60] [2,25 阅读全文
posted @ 2020-05-15 22:18 Roronoa-Zoro 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 思路:1、选择排序是将其分成两部分,左边是排好序的,右边是还没排好的,一开始,左边就是空,我们让最小值的下标为移动比较的变量 即min_index=0来实现第一次的排序 选择排序的思路是一次找到没有排序那边中最小的数,把它放到左边0位置上 继续找到没有排序那边最小的数,放置左边1位置上,以此类推 从 阅读全文
posted @ 2020-05-15 21:25 Roronoa-Zoro 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 思路:可以将第一次排序过程先写出来,当第i个元素大于第i+1个元素时,将两个元素位置进行交换,等于小于都不需要做任何操作 0~n-1是因为这个过程始终是第i个元素与其后一个元素相比较,不需要移动到最后一个元素 def bubble_sort(alist): n=len(alist) for i in 阅读全文
posted @ 2020-05-15 17:09 Roronoa-Zoro 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 双向链表的操作 remove(item)删除链表中的元素 思路:1、需要循环遍历,循环条件为cur != None;同时需要判断cur.item等不等于item,等于进入循环,不等于移动指针,cur=cur.next 2、当删除元素对于当前cur指向时候,分情况考虑 a、第一个元素是要删除的元素,需 阅读全文
posted @ 2020-05-15 15:37 Roronoa-Zoro 阅读(614) 评论(0) 推荐(0) 编辑
摘要: 双向链表的操作 search(item) 思路:在查找方面,双向链表跟单向链表并没有什么区别,一样的方法,遍历判断是否相等,不相等移动到下一个节点 class DLinkList(object): def __init__(self): self._head=None def search(self 阅读全文
posted @ 2020-05-14 17:18 Roronoa-Zoro 阅读(556) 评论(0) 推荐(0) 编辑
摘要: 双向链表的操作 insert(pos,item) 特定位置pos添加元素item 思路:1、当pos<=0的时候,就是头部添加元素,这里用了封装的类,之前写过 url:https://www.cnblogs.com/cong3Z/p/12889535.html 2、当pos超过了当前链表的长度,认为 阅读全文
posted @ 2020-05-14 17:09 Roronoa-Zoro 阅读(415) 评论(0) 推荐(0) 编辑
摘要: 双向链表的操作 append(item) 思路:1、当链表为空,直接让self.__head=node即可,因为node前面后面都没有节点 2、当链表不为空,进入循环,找到尾节点,循环条件为cur !=None ,不再进入时,cur指向尾节点,这时候,让cur.next=node及node.prev 阅读全文
posted @ 2020-05-14 16:43 Roronoa-Zoro 阅读(910) 评论(0) 推荐(0) 编辑
摘要: 双向链表的操作 add(item)在头部添加一个新元素 思路:当链表为空,让self.__head=node即可 当链表不为空,要让链表中第一个节点向前指向新的节点self.__head.prev=node;此外,将新节点下一个指向原来的第一个节点,即node.next=self.__head 最后 阅读全文
posted @ 2020-05-14 16:26 Roronoa-Zoro 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 双向链表的操作 节点类的构造:这时候,一个节点存储三个信息:元素,指向下一个节点地址,指向上一个节点地址 is_empty()判断链表是否为空 length()计算链表长度 travel()遍历 这三种其实跟单向链表没有什么区别,当然可以把单向链表封装成类,减少重新写的麻烦 class Node(o 阅读全文
posted @ 2020-05-14 16:01 Roronoa-Zoro 阅读(160) 评论(0) 推荐(0) 编辑