🔍 登录 注册

累加求和算法

大 大苹果 2017-06-05 后端 👁 2143 ⏱ 3min
累加求和算法

例子:求1累加100。

普通算法

int sun = 0;
for (int i = 1; i<100 i++){
    sum = sum + i;
}

优化后的算法

int sum =(1 + 99) * 50 + 50;

如果1累加到99.

int sun = 0;
for (int i = 1; i<99 i++){
    sum = sum + i;
}

优化后的算法

int sum =(1 + 98) * 50;

优化算法与通用算法对比

#include<stdio.h>


void change(int *num1, int *num2){
	*num1 = *num2 + *num1;
	*num2 = *num1 - *num2;
	*num1 = *num1 - *num2;
}

int add(int min, int max){
	if (min > max) {
		change(&min, &max);
	} 
	int sum = 0;
	int addTimes = 0;
	if ((min + max) % 2 == 0) {
		addTimes = (max - min) / 2; 
		return addTimes * (max + min ) + (max + min ) /2;
	} else {
		addTimes = (max - min + 1) / 2; 
		return (max+min)*addTimes;
	}	
}

int commAdd(int min, int max){
	if (min > max) {
		change(&min, &max);
	}
	int sum = 0;
	for (int i = min; i <= max; i++) {
		sum+=i;
	}
	return sum;
}

void main() {
	int min = -1,max = -100;
	printf("add = %d\n", add(min, max));
	printf("addcomm = %d\n", commAdd(min, max));
}

结果如下:

add = -5050
addcomm = -5050
Press any key to continue


读完了?给作者一点支持

本文采用 CC BY 4.0 协议转载 · © 大苹果

评论(0)

登录 后参与评论。

  • 还没有评论,来抢沙发。

🔗 相关文章