码迷,mamicode.com
首页 >  
搜索关键字:空间复杂度    ( 2067个结果
计数排序C语言实现
计数排序是稳定排序,而且是线性时间内的排序算法,时间复杂度是O(n + k)其中k是待排序数组的范围。计数排序不是原址排序,空间复杂度是O(n + k) //k是指A中的数组范围是0~k 包括0和k void count_sort(int A[], int B[], int n, int k) { int *C = (int *)malloc(sizeof(int) * ...
分类:编程语言   时间:2015-08-04 00:39:31    阅读次数:131
数据结构基础 算法复杂度分析(一) 概念篇
为什么要进行算法分析? 预测算法所需的资源 计算时间(CPU 消耗)内存空间(RAM 消耗)通信时间(带宽消耗) 预测算法的运行时间 在给定输入规模时,所执行的基本操作数量,或者称为算法复杂度(Algorithm Complexity) 如何衡量算法复杂度? 内存(Memory)时间(Time)指令的数量(Number of Steps)特定...
分类:编程语言   时间:2015-08-02 21:44:16    阅读次数:213
数据结构基础 算法复杂度分析(二) 典例篇
示例代码(1) decimal Factorial(int n) { if (n == 0) return 1; else return n * Factorial(n - 1); } 【分析】 阶乘(factorial),给定规模 n,算法基本步骤执行的数量为 n,所以算法复杂度为 O(n)。 示例代码(2) int FindMaxElement(int[] array) { int max = array[0]...
分类:编程语言   时间:2015-08-02 21:43:05    阅读次数:174
leetcode 238 Product of Array Except Self
这题看似简单,不过两个要求很有意思:1、不准用除法:最开始我想到的做法是全部乘起来,一项项除,可是中间要是有个0,这做法死得很惨。2、空间复杂度O(1):题目说明了返回的那个数组不算进复杂度分析里面做法:既然不用除法,对于某个数i, result[i] = 0到i - 1的乘积 X i + 1...
分类:其他好文   时间:2015-08-02 19:46:56    阅读次数:124
[Leetcode] Palindrome Linked List
一、因为要判断左右链表的断电的对称,可以先将节点取出,放到vector当中,然后使用随机访问的方式对其进行对称性判断空间复杂度为 O(n),时间复杂度为O(n)二、可否将空间复杂度降下来,可以采用两个指针,将链表分为两部分。dummy->head从dummy开始一个指针每次前进一步,另一个指针每次前...
分类:其他好文   时间:2015-08-02 13:06:59    阅读次数:158
算法题:剔除字符串(很有意思)
/* 两个字符串A、B。从A中剔除存在于B中的字符。 比如A = “hello world”, B = "er",那么剔 除之后A变为"hllo wold"。空间复杂度要求是O(1) ,时间复杂度越优越好。 */ #include #include using namespace std; void Grial(char *str,char *ptr) {...
分类:编程语言   时间:2015-08-02 06:24:28    阅读次数:127
三种线性排序算法(计数、基数、桶排序)的简单实现
计数排序 计数排序假设n个输入元素中的每一个都是介于0到k之间的整数。此处k为某个整数(输入数据在一个小范围内)。 算法思想 计数排序的基本思想是对每一个输入元素x,确定出小于x的元素的个数。然后再将x直接放置在它在最终输出数组中的位置上。   由于数组中可能有相等的数,在处理时需要注意。   时间复杂度和空间复杂度分析 算法总时间Θ(k + n)。当k=O(n)时,计数排序的...
分类:编程语言   时间:2015-08-01 23:35:40    阅读次数:151
归并排序C语言实现
归并排序典型的分治策略的体现,时间复杂度是O(nlgn), 空间复杂度是O(n).属于稳定排序。 下面是C语言实现代码。 #define MAX 10000000 //p, q, r是均是元素的下标 void merge(int A[], int p, int q, int r) { int n1 = q - p + 1; int n2 = r - q; int...
分类:编程语言   时间:2015-08-01 20:37:03    阅读次数:145
数组重排序(将所有奇数都放在前面,所有偶数放在后面)的深入分析
例:长度为N的数组,把奇数放到数组的前面,偶数放到数组的后面 空间复杂度为O(1)核心思想是:定义两个指针,一个指针A从前往后扫描,一个指针B从后往前扫描。指针A扫描到偶数暂停,指针B扫描到奇数暂停,然后交换着两个数,交换之后继续如上述扫描和交换,直到指针A和指针B重合停止。C语言中&表示按位与,0...
分类:编程语言   时间:2015-08-01 07:39:16    阅读次数:108
字符串反转之——手摇算法
手摇算法(也叫三次反转算法) 看题:将字符串abcdefg,变成efgabcd,要求空间复杂度O(1)。 解答: 第一步:将子串abcd反转,变成dcba。源字符串变成dcbaefg第二步:将字串efg反转,变成gfe。源字符串变成dcbagfe第三步:将整个字符串dcbagfe反转,变成efgabcd。 手摇算法常常被用来旋转字符串。同时,手摇算法也可以用来做原地归并...
分类:编程语言   时间:2015-07-31 10:37:41    阅读次数:189
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!