上一页 1 ··· 4 5 6 7 8 9 下一页
摘要: 插入排序,故名思议,将数据插入到合适的位置,形成子排序序列。遍历序列时,从第二个元素开始(第一个默认排序),依次与之前排序好的子序列进行比较,由近及远。如上图。每进行一次插入排序,子排序序列增长一个长度。 代码实现如下: 遍历时,从第二个元素开始,若当前元素小于子排序序列里的最大值(子排序序列为0到 阅读全文
posted @ 2018-11-01 23:07 Jeffrey_Yang 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 选择排序算是对冒泡排序的一种改进:假设有n个待排列的数据,在第一轮遍历中,仍进行n 1次比较,遍历的时候用当前数与当前获得的最大数进行比较,而不是相邻的数据进行比较,且仅进行一次数据交换。而冒泡排序在每一次比较的过程中,发现数据顺序不一致就交换,数据交换的次数更多。选择排序只需要用标记记住每一轮的最 阅读全文
posted @ 2018-11-01 22:03 Jeffrey_Yang 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 冒泡排序,有时也称为下沉排序,是一种简单的排序算法,它反复遍历要排序的列表,比较每对相邻的项目,如果它们的顺序错误则交换它们。 重复遍历列表,直到不需要交换,这表示列表已排序。 该算法是一种比较排序,以较小或较大元素“冒泡”到列表顶部的方式命名。 尽管算法很简单,但即使与插入排序相比,它对于大多数问 阅读全文
posted @ 2018-10-28 19:28 Jeffrey_Yang 阅读(455) 评论(0) 推荐(0) 编辑
摘要: 概念 Python中的Dict是一种使用最为普遍的数据结构,特别是数据之间具有关联关系时。上一博文提到了 "hash function和hash table的概念" ,现在来用代码实现HashTable。 我们通过两个list来分别存储key和value,这就要求两个list的大小一致,在对应的in 阅读全文
posted @ 2018-10-27 20:56 Jeffrey_Yang 阅读(1951) 评论(0) 推荐(0) 编辑
摘要: 今天在《Problem Solving with Algorithms and Data Structures》一书中读到了关于hash table与hash function相关的内容,在这里做个记录,加深印象。 概念介绍 和顺序搜索以及二分搜索相比,通过hash表查找指定内容更快,通常其时间复杂 阅读全文
posted @ 2018-10-27 14:49 Jeffrey_Yang 阅读(516) 评论(0) 推荐(0) 编辑
摘要: 概念介绍 上一博文已经介绍了Python实现单向无序链表的实现方式,这篇博文来介绍Python如何实现单向有序链表。有序和无序仅仅指节点所包含的数据成员的大小排列顺序,有序指各个节点按照节点数据成员的大小顺序排序,从大到小或从小到大。无序则可以任意排列。 链表节点实现 实现方式完全同单向无序列表,这 阅读全文
posted @ 2018-10-23 23:30 Jeffrey_Yang 阅读(1514) 评论(0) 推荐(0) 编辑
摘要: 概念介绍 在计算机科学中,链表代表着一种多个数据元素的线性集合。链表的顺序不由其在内存中的物理位置决定,而是通过每一个元素指向另一个元素来实现。链表中,一个实体对象为一个节点(Node),每个节点同时保存其数据(data)和一个引用(reference)指向另一个节点。特别需要说明的是,链表这种数据 阅读全文
posted @ 2018-10-22 22:36 Jeffrey_Yang 阅读(2760) 评论(0) 推荐(0) 编辑
摘要: Deque这种数据结构结合了Stack和Queue的特点,元素可以从两边添加,也可以从两边移除。 依然通过List来构造该数据类型: rear可以看作是List的左边,front为List的右边。两边都能添加和删除元素。 Palindrome Checker为经典的回文问题,若字符串无论从左往右还是 阅读全文
posted @ 2018-10-21 14:40 Jeffrey_Yang 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 概念介绍 Queue队列这种数据结构和Stack都是线性结构,但其主要区别是Stack为LIFO,而Queue为FIFO。以List作为来构造Queue,则每当有新的元素进入队列时,将其插入到index为0的位置。 Hot Potato就是一个经典的应用Queue思想的游戏:想象几个儿童围成一圈,以 阅读全文
posted @ 2018-10-21 14:29 Jeffrey_Yang 阅读(406) 评论(0) 推荐(0) 编辑
摘要: 软件【Software】: 软件(software)是计算机中与硬件(hardware)相结合的一部分,包括程序(program)和文档(document)。用一个等式表示为:软件=程序+文档。其中,“程序”指的是能够实现某种功能的指令的集合,如C语言程序,Java程序等;“文档”指的是在软件开发、 阅读全文
posted @ 2018-10-20 14:21 Jeffrey_Yang 阅读(1151) 评论(0) 推荐(0) 编辑
上一页 1 ··· 4 5 6 7 8 9 下一页