(1)顺序表: 题目1: 已知长度为n的顺序表, 写一时间复杂度为O(n), 空间复杂度为O(1)的算法,实现删除顺序表中所有值为item的数据元素的操作 类和类函数的声明文件(SqList.h): 类函数的实现文件(SqList.cpp): ...
分类:
编程语言 时间:
2016-04-04 11:33:52
阅读次数:
139
题目描述 对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。 给定一个链表的头指针A,请返回一个bool值,代表其是否为回文结构。保证链表长度小于等于900。 测试样例: 1->2->2->1 返回:trueSolution 1: /* struct ...
分类:
其他好文 时间:
2016-04-03 20:17:55
阅读次数:
203
基本思想 1.把记录按步长 gap 分组,对每组记录采用直接插入排序方法进行排序。2.随着步长逐渐减小,所分成的组包含的记录越来越多,当步长的值减小到 1 时,整个数据合成为一组,构成一组有序记录,则完成排序。 代码实现 效率分析 不稳定 空间复杂度:O(1) 时间复杂度:O(nlog2n) 最坏情 ...
分类:
编程语言 时间:
2016-04-03 18:47:23
阅读次数:
152
基本思想 选择排序首先遍历列表,并且将最小的元素与第一个元素进行比较,随后遍历剩余的元素并将次小的元素与第二个元素进行比较,依次类推。选择排序是和冒泡排序差不多的一种排序。和冒泡排序交换相连数据不一样的是,选择排序只有在确定了最小的数据之后,才会发生交换。 代码实现 效率分析 不稳定 空间复杂度:O ...
分类:
编程语言 时间:
2016-04-03 17:10:15
阅读次数:
119
交换排序(冒泡排序、快速排序) 插入排序(直接插入排序、希尔排序)、 选择排序(直接选择、堆排序) 归并排序 基排序 1.冒泡排序 时间复杂度:最优情况下是O(n),最坏情况和平均情况是O(n2) 空间复杂度:O(1) 稳定 算法实现是 从小到大排序 结果是1 2 3 5 6 7 2 快速排序 时间 ...
分类:
编程语言 时间:
2016-04-02 17:31:55
阅读次数:
221
方法 时间复杂度 空间复杂度 Stable 冒泡排序(Bubble Sort) O(n) — O(n^2) O(1) yes 选择排序(Selection Sort) O(n^2) — O(n^2) O(1) no 插入排序(Insertion Sort) O(n) — O(n^2) O(1) ye ...
分类:
编程语言 时间:
2016-04-02 13:34:51
阅读次数:
203
概述
八大排序算法不用多说了,程序员算法基础必须要掌握的,现在总结一下加深记忆。下图是这八大排序算法的分类、名称、时间空间复杂度,以及稳定性。
代码
以下是经典八大排序算法的Java及Python代码,都是基于经典算法书籍《算法导论》里的伪代码实现的,我在关键语句部分附上了注释。
按照上图中的顺序分别介绍八大排序算法的实现,前面是Java,后面是Python。Java的排序函数写在...
分类:
编程语言 时间:
2016-04-01 16:08:27
阅读次数:
241
有个500g大小的文件,程序的运行内存1g,这个文件里边每行一个单词。 正常情况下,每个单词出现的次数为偶数次; 但是,由于程序出现bug,有一个单词出现了奇数次,怎么找到这个单词? 这种方法,时间复杂度是O(N),空间复杂度是O(1)。 关于异或的扩展阅读: 感受异或的神奇 ...
分类:
其他好文 时间:
2016-03-31 23:31:58
阅读次数:
190
形式化、搜索、执行。 一、形式化 1. 初始状态 2. 可能行动 3. 转移模型 4. 目标测试 5. 路径耗散 二、算法性能 1. 完备性 2. 最优性 3. 时间复杂度 4. 空间复杂度 三、无信息搜索策略 1. 宽度优先搜索 先扩展根结点,接着扩展根结点的所有后继,然后再扩展它们的后继。一般地 ...
分类:
其他好文 时间:
2016-03-29 16:37:55
阅读次数:
180
问题描述:Sort a linked list in O(n log n) time using constant space complexity. O(n lgn)时间复杂度,O(1)空间复杂度。 分析:O(n lgn)时间复杂度的排序算法有几个(快排,归并,希尔,堆),但是O(1)空间复杂度就 ...
分类:
其他好文 时间:
2016-03-29 14:18:49
阅读次数:
134