`
chentingk
  • 浏览: 19966 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

数据结构笔记(一)

 
阅读更多

一.递归和循环的区别

void loop()
{
	
	for(int i=0;i<N;i++)
		printf("%d\n",i);
}

 

 

void recursion(int n)
{
	if(n){
		recursion(n-1);
		printf("%d\n",n);
	}

}

 

 

void Test1()
{
	
	start=clock();
	loop();
	end=clock();
	printf("ticke1=%f\n",(double)(end-start));
	printf("time = %f\n",(double)((end-start)/CLK_TCK));
	

	start=clock();
	recursion(N);
	end=clock();
	printf("ticke1=%f\n",(double)(end-start));
	printf("time = %f\n",(double)(end-start)/CLK_TCK);
	printf("clk-tck=%f\n",CLK_TCK);

}

 



 

看起来差不多,但是递归存在压栈的过程,会存在栈溢出问题

二.多项式计算

double f1(int a[],int n,double x)
{
	double result=0;
	for(int i=0;i<n;i++)
		result=result+a[i]*pow(x,i);
	return result;
}

 

 

double f2(int a[],int n,double x)
{
	double result=0;
	for(int i=n;i>0;i--)
		result=a[i-1]+x*result;
	return result;
}

 



 

 

 

 

第二个算法较优,第一个算法复杂度太高。聪明地利用算法,提高效率

三.最大字段和

     给定K个整数组成的序列{ N1, N2, ..., NK },“连续子列”被定义为{ Ni, Ni+1, ..., Nj },其中 1 <= i <= j <= K。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最大的和20。现要求你编写程序,计算给定整数序列的最大子列和 

 

算法一: O(n3)

//暴力法 三重循环
int count1()
{
	int maxCount=0;
	int temp=0;
	for(int i=0;i<len;i++)
		
		for(int j=i;j<len;j++){
		
			
			for(int k=i;k<=j;k++){	

				temp+=s[k];
				if(temp>maxCount)
				{
					maxCount=temp;
					head=i;
					tail=k;
				}

			}
			temp=0;
		}
		return maxCount;
}

 

算法二:O(n2)

//暴力法,二重循环
int count2()
{
	int maxCount=0;
	int temp=0;
	for(int i=0;i<len;i++){
		for(int j=i;j>0;j--){
			temp+=s[j];
			if(temp>maxCount)
			{
				maxCount=temp;
				head=j;
				tail=i;
			}
		
		}
		temp=0;
	}



	return maxCount;
}

 

算法三:O(n*logn)

//分治法,nlogn复杂度
int count3(int left,int right)
{
	if(left==right)
		if(s[left]>0)
			return s[left];
		else 
			return 0;
	int mid =(left+right)/2;
	int maxLeft=count3(left,mid);
	int maxRight=count3(mid+1,right);
	int templ=0,tempr=0;
	int maxl=0,maxr=0;
	
	for(int i=mid;i>=left;i--)
	{
		templ+=s[i];
		if(templ>maxl){
			maxl=templ;

		}
	}
	for(int i=mid+1;i<=right;i++)
	{
		tempr+=s[i];
		if(tempr>maxr){
			maxr=tempr;
	
		}
	}
	int border=maxl+maxr;
	if(maxl>maxr)
		if(maxl>border){

		
			return maxl;
		}
		else{
			
			return border;
		}
	else
		if(maxr>border){
			
			return maxr;
		}
		else{
		
			return border;
		}
}

 

算法四:O(n)

//在线处理
int count4(int num)
{
	int ThisSum=0,MaxSum=0;
	for(int i=0;i<num;i++)
	{
		ThisSum+=s[i];
		if(ThisSum>MaxSum)
			MaxSum=ThisSum;
		else if(ThisSum<0)
			ThisSum=0;
	}
	return MaxSum;
	
}

 

  • 大小: 31.4 KB
  • 大小: 32.6 KB
分享到:
评论

相关推荐

    数据结构高分笔记part1

    这份“数据结构高分笔记part1”显然是为了帮助备考研究生入学考试的专业学生准备的,旨在提供深入的数据结构理解,助力他们在考试中取得优异成绩。 笔记可能涵盖以下几个关键知识点: 1. **基本概念**:首先,笔记...

    郝斌数据结构笔记.pdf

    郝斌数据结构笔记 数据结构概述: 数据结构是指在计算机中对数据的存储、组织和管理的方式。它是软件最核心的课程,学完了啥也干不了。数据结构 = 个体的存储 + 个体的关系存储,算法 = 对存储数据的操作。 知识点...

    郝斌数据结构笔记

    郝斌数据结构笔记 。

    数据结构笔记

    这篇“数据结构笔记”可能包含了关于这个主题的深入理解和实践应用。结合给出的标签“源码”和“工具”,我们可以推测这份文档不仅讨论了理论知识,可能还涉及到了实际编程实现和相关工具的使用。 在数据结构的学习...

    数据结构(C语言描述)学习笔记、学习文档.zip

    数据结构(C语言描述)学习笔记、学习文档 数据结构(C语言描述)学习笔记、学习文档 数据结构(C语言描述)学习笔记、学习文档 数据结构(C语言描述)学习笔记、学习文档 数据结构(C语言描述)学习笔记、学习文档 ...

    数据结构 笔记 sani html

    "求职笔记.docx"可能是一份与数据结构相关的求职准备资料,可能涵盖了面试常见问题、数据结构的重要性以及如何在实际工作中应用这些知识。这部分内容可能包含了一些面试技巧和行业动态,帮助你更好地准备技术面试。 ...

    java数据结构和算法学习笔记

    ### Java数据结构与算法学习笔记知识点总结 #### 一、数据结构概述 数据结构是对数据的一种组织形式,它决定了数据的存储方式以及处理数据的方法。常见的数据结构包括但不限于数组、链表、栈、队列、二叉树、图等...

    数据结构笔记(C++版)

    本篇将详细介绍《数据结构笔记(C++版)》中的关键知识点,帮助读者深入理解数据结构的基础概念及其在C++中的实现。 #### 二、数据结构的核心概念 1. **数据**: 能够被计算机处理的各种符号的集合,包括数字、字符、...

    2020 天勤数据结构 高分笔记 + 习题

    总之,这份资料为准备考研的同学提供了一个全面的数据结构学习资源,通过笔记和习题的结合,有助于考生在考试中取得优异成绩。在复习过程中,考生应注重理论与实践的结合,不断思考和练习,才能真正掌握数据结构的...

    数据结构笔记.pdf

    但是,根据标题“数据结构笔记.pdf”,我可以提供有关数据结构的基础知识点。 数据结构是计算机存储、组织数据的方式。它旨在以某种方式将数据存储在计算机中,以便于可以进行有效的访问和修改。更确切地说,数据...

    408考试数据结构高分笔记2019版(天勤论坛)

    "408考试数据结构高分笔记2019版(天勤论坛)"是一份针对这一考试的重要参考资料,它包含了丰富的理论知识和实战技巧,旨在帮助考生深入理解和熟练应用数据结构的基本概念、算法和设计方法。 笔记首先会涵盖数据...

    C语言实现的数据结构笔记

    线性表是一种基本的数据结构,由n个(n≥0)数据元素组成,每个元素最多只有一个直接前驱和后继。线性表的操作包括构造空表、获取表长、查找特定元素、插入元素、删除元素等。顺序存储结构是线性表的一种实现方式,...

    数据结构笔记(C语言版)

    《数据结构笔记(C语言版)》源自清华大学严蔚敏、吴伟明的经典教材,涵盖了数据结构的基础理论和实践方法。 1. 数据结构的定义:数据结构是数据之间的相互关系,它包括逻辑结构、存储结构和数据运算三个方面。逻辑...

    数据结构电子笔记

    这份“数据结构电子笔记”涵盖了这一领域的重要概念和算法,是学习和理解数据结构的理想资源。 笔记可能包含了以下关键知识点: 1. **线性数据结构**:包括数组、链表(单链表、双链表、循环链表)、栈和队列。...

Global site tag (gtag.js) - Google Analytics