절강 대학 첸 왕위 데이터 구조 강의 : 기본 개념


첫 번째 강의의 기본 개념

데이터 구조는 무엇인가

데이터 구조 및 알고리즘

예 1 책장의 책

: 예약 달성 촉진하기 위해 두 개의 관련 작업을 할 위치
(카테고리 + 알파벳 순서로 넣어 소리 넣어에 따라, 부담없이 넣어) 삽입하는 방법 1. 새 책
이 특정 책 (소진, 이진 검색)의 일부를 찾는 방법 (2)

요약 : 관계 데이터의 크기에 실제로 데이터 조직, 방법을 물었을 때
문제의 같은 규모가 아닌, 그들과 함께 처리의 어려움, 동일하지 않은 데이터가의 조직과 프로세스의 효율성을 해결하기 위해. 종료

실시 예 2 쓰기 함수, N, N-1의 모든 양의 정수 인쇄 순서 양의 정수를 입력한다.

루프의 제 1 방법

제 재귀

요약 : N 100000, 회계 공간의 재귀 적 사용의 문구 경우 간단한 재귀,하지만 매우 무서운 공간의 재귀 직업, 충분하지 않지만, 다음이 비정상 종료가 발생, 폭발. 문제를 해결하기 위해 효율적인 방법은 또한 공간의 이용 효율과 관련이있다.

x의 다항식으로 주어진 시점에 예 3 쓰기 계산치

첫 번째 방법은 직접적으로 (직접적으로 간단하고 조) 다항식 번역

재 번역 다항식을 단순화하는 법의 두 번째 사용

어떻게 프로그램의 실행 시간 테스트
시간 타점이다 시계 () 시간이 소비 될 때 호출되는, colock 틱 시간, 실행 처음부터 캡처 프로세스 : 시계 () 함수를
상수의 CLK_TCK을 : 시계가 두 번째 시스템 클럭 이동 당 체력

#include<stdio.h>
#include<time.h>//调用clock函数需要的头文件

clock_t start,stop;//clock_t是clock函数返回的变量类型
double duration;
int mian()
{
    start=clock();//开始计时
    myfuncation();//把被测函数加在这里
    stop=clock();//停止计时
    duration=((douboe)(stop-star))/CLK_TCK;
    //得出运行时间
    
}

실행 시간이 너무 짧은 이하 1 개 단위보다 때, 우리는 반복하고, 마지막 단어가 시간을 실행 오는 횟수로 나눈 걸릴

요약 : 초보다 느린 크기 순서의 실행 시간을 첫 번째 방법 영리한 알고리즘 관련 정도 효율 문제 해결 방법.

결국 데이터 구조는 무엇인가?

  • 데이터 객체는 컴퓨터로 구성됩니다
  • 논리 구조 (하나 많은 선형 구조 : 대부분 트리 :도).
  • 물리적 저장 구조 (링크드리스트, 배열 등)
  • 이것은 일련하는 데이터 객체에 적용되어야 조작 관련
  • 이러한 작업은 사용되는 방법이었다 완료 알고리즘
  • 추상 데이터 유형
  • 데이터 유형
    • 데이터 개체의 집합
    • 동작 데이터 세트와 연관된 집합
  • 요약 : 데이터 유형의 특정 구현에 대한 설명 의존하지 않는
    • 상관없이 데이터를 저장하는 기계의
    • 관계없이, 데이터 저장소의 물리적 구조
    • 그리고 알고리즘과 프로그래밍 작업은 관련이

데이터 만 개체와 관련된 작업의 설정 설명 설정 무엇을 포함하지 않는 수행하는 방법에 문제가

요약 : 추상되고, 상대적으로 당신이 그런 기능으로, 사용이, 당신이 더 명확하게이 데이터 구조를 이해 할 수 있도록, 언어, 그들은하지 복잡하게 얽힌 데이터 형식을 무엇과 엉킴을하지 않는 것,이 타입의 데이터의 일을 알고 취소 최대 (), 당신은 당신이 두 수의 최대 값을 찾는 것이다 알고 때 데이터 유형을 복잡하게 얽힌 필요가 없습니다, 그것을 사용하지 않으며, 어떤 언어로 실현 얽힌 더 간단한 방법이 가장 중요한 이유이다 : 인터페이스 분리! 강한 재사용!

알고리즘은 무엇입니까

  • 연산
  • 지침의 유한 집합
  • (어떤 경우는 입력 할 필요가에서) 일부 입력을 승인
  • 출력을 생성
  • 특정 제한 단계 이후에 종료
  • 각 명령해야
    • 충분히 명확한 목표가있다. 모호하지 않음
    • 컴퓨터의 범위가 처리 할 수있는 내
    • 설명은 컴퓨터 언어의 종류와 달성의 특정 수단에 의존해서는 안

좋은 알고리즘은 무엇입니까

  • 공간 복잡도 S (N)
  • 시간 복잡도 T (N)

예 : N PRINT 재귀

n이 충분히 큰을 때, 공간이 포함됩니다
루프 풋 프린트는 항상 일정하다

  • 일반적으로 알고리즘의 효율성을 분석 할 때, 우리는 종종이 복잡성에 초점
  • 최악의 복잡성
  • 평균 복잡성

진보적 인 표현의 복잡성

알고리즘은 매우 잘 분석하지 않는
경향 성장의 대략적인 견적을

복잡성 분석 팁

  • 복잡성 걸릴 최대
  • 사이클 시간의 복잡성 용 루프 본체 코드 복잡성 사이클의 수와 동일하다 *
  • 조건 판정 복잡성과 양 다리 부 복잡성 전체적인 복잡성이 다른 값의 경우, 큰 쪽 인 상 구조의 복잡성 의존

적용 예 : 최대 행과 문제 아이

在线处理 ,灵活巧妙,简化问题+找规律 
#include<bits/stdc++.h>//最大数据10的5次方时21ms 
using namespace std;
int num[100000];
int maxn=0;
int main()
{
	int n=0,sum=0;
	scanf("%d",&n);
	for(int i=0;i<n;i++)
	{
		scanf("%d",&num[i]);
		maxn=maxn+num[i];
		if(maxn<0)
		{
			maxn=0;
		}
		if(maxn>sum)
		{
			sum=maxn;
		}
		//printf("%d",sum);
	}
	if(sum<0)
	{
		printf("0");
	 } else
	printf("%d",sum);
	return 0;
 } 
#include<bits/stdc++.h>//最大数据10的5次方时3700ms 爆力法 
using namespace std;
int num[100000];
int maxn=0;
int main()
{
	int n=0,sum=0;
	scanf("%d",&n);
	for(int i=0;i<n;i++)
	{
		scanf("%d",&num[i]);
	}
	for(int i=0;i<n;i++)
	{
		maxn=0;
		for(int j=i;j<n;j++)
		{
			maxn=maxn+num[j];
			if(maxn>sum)
			{
				sum=maxn;
			}
		}
	}
	if(sum<0)
	{
		printf("0");
	 } else
	printf("%d",sum);
	return 0;
} 
#include<bits/stdc++.h>//最大数据10的5次方时3700ms .分而治之 
略
게시 된 원본 기사 · 원의 칭찬 0 · 조회수 13

추천

출처blog.csdn.net/qq_45090427/article/details/105012520