最大子数组之和(线性时间复杂度,C语言实现)
2014-03-26 10:42
671 查看
#include <stdio.h> #include <stdlib.h> #define NUM 7 void max_subarray(int *); int main() { int A[NUM] = {-2,5,3,-6,4,-8,6}; for (int i = 0; i < NUM; i++) { printf("%d ", A[i]); } printf("\n"); max_subarray(A); return 0; } void max_subarray(int A[]) { int max = -30;//当数组值全为负值时,max的初始化值必须小于其最大值。 int temp = -1;//初始化值小于0。 int s = 0, e = 0, p = 0;//s记录开始,e记录结束位置。(记录的是数组下标) for (int j = 0; j < NUM; j++) { if (temp < 0) { temp = 0; p = j; } temp += A[j]; if (temp > max) { max = temp; s = p; e = j; } } printf("%d %d %d\n", s, e, max); }
相关文章推荐
- [java实现]找一个数组的最大和的连续子数组(时间复杂度 O(n))
- 用线性时间复杂度实现找出数组中出现一次的元素
- 用线性时间复杂度实现找出数组中出现一次的元素
- 用线性时间复杂度实现找出数组中出现一次的元素
- 用线性时间复杂度实现找出数组中出现一次的元素
- [java实现]找一个数组的最大和的连续子数组(时间复杂度 O(n))
- 用线性时间复杂度实现找出数组中出现一次的元素
- 算法导论 4.1-5 最大子数组问题 线性时间算法 C++简单实现
- 算法导论4.1-3~4.1-5最大子数组暴力算法和递归算法的实现和线性时间算法实现
- 算法导论-最大子数组问题-线性时间复杂度算法分析与实现
- 最大子数组问题的递归和非递归(线性时间)代码
- C语言实现求数组的子数组之和的最大值并求出最大子数组位置
- 不同时间复杂度实现最大子段和
- 线性时间解决最大子数组问题
- <算法导论》第四章的求最大子数组的C语言实现
- 【C语言】求取第n个斐波那契数的时间复杂度、空间复杂度分析,用三种方式实现(普通递归,循环,优化递归)
- 长度为n的整数数组,找出其中任意(n-1)个乘积最大的那一组,只能用乘法,不可 以用除法。要求对算法的时间复杂度和空间复杂度作出分析,可以写思路也可以写程序。
- 线性时间复杂度求数组中第K大数
- 在线性时间和空间复杂度内,求大小相邻两元素之差的最大值
- 最大子数组问题及C语言实现