데이터 구조 와 알고리즘 - 기본 지식
6002 단어 데이터 구조 와 알고리즘 (자바 버 전)
1. 데이터 구조 와 알고리즘 의 개념
데이터 구 조 는 현실 의 데 이 터 를 컴퓨터 에 어떻게 저장 하 는 지 연구 하 는 것 으로 데이터 간 에 특정한 논리 적 관 계 를 가지 게 하여 사람들 이 이 데 이 터 를 효과적으로 방문 하고 처리 할 수 있다.데이터 구조 에서 주로 이 네 가지 저장 구조 가 존재 하 는데 그것 이 바로 순서 구조, 체인 구조, 산열 구조 와 색인 구조 이다.알고리즘 은 데 이 터 를 처리 하 는 방법 이자 프로그래머 가 문 제 를 해결 하 는 방법 과 사고 이다. 알고리즘 의 효율 은 데이터 의 처리 속 도 를 결정 하 는 동시에 프로그래머 의 능력 도 나타 내 므 로 알고리즘 은 모든 프로그래머 에 게 매우 중요 하 다.저 는 프로 그래 밍 의 가장 중요 한 것 은 문 제 를 해결 하 는 능력, 즉 사고 와 방법 이 라 고 생각 합 니 다. 그 다음 에 coding 의 과정 이 라 고 생각 합 니 다. coding 은 현실 의 사물 을 코드 의 형식 으로 바 꾸 고 단련 할 수 있 기 때문에 우 리 는 자신의 논리 적 사고력 을 키 우 는 것 을 중시 해 야 합 니 다. 개인 적 인 견 해 를 가지 고 뿌 려 서 는 안 됩 니 다.알고리즘 이 가 져 야 할 5 가지 특성 은 모두 가 알 고 있 을 것 이다. (1) 가난 성 이 있다. 하나의 알고리즘 은 반드시 일정한 절 차 를 실행 한 후에 끝내 야 한다. 그렇지 않 으 면 프로그램 이 순환 하지 않 는 다.(2) 확정 성: 알고리즘 중의 모든 단 계 는 정확 한 의 미 를 가 져 야 한다.컴퓨터 는 기계 이 고 프로그램 은 어떻게 가 는 지 알려 주 는 것 이다. 그렇지 않 으 면 방향 을 잃 을 것 이다. 인간 처럼 똑똑 하지 않다. 하하.(3) 타당 성: 알고리즘 중의 모든 단 계 는 반드시 실행 가능 해 야 한다. 즉, 모든 단 계 는 제 한 된 시간 안에 완성 할 수 있 고 무한 한 집행 이 아니 라 의미 가 없다.(4) 입력: 하나의 알고리즘 은 0 개 이상 의 입력 이 가능 합 니 다.(5) 출력: 하나의 알고리즘 은 적어도 하나의 출력 이 있다.출력 이 없 으 면 이 알고리즘 은 모 용이 있 습 니 다!
2. 알고리즘 평가
알고리즘 평 가 는 알고리즘 의 좋 고 나 쁨 을 평가 하 는 것 이다.보통 한 가지 일 에 대해 다양한 처리 방법 이 있 기 때문에 우 리 는 가장 좋 은 해결 방안 을 선택 할 것 이다.예 를 들 어 베 이 징 에 가면 서로 다른 지역 의 사람들 이 서로 다른 이동 방식 을 가 질 수 있다. 천진 에 대해 자가 운전 은 베 이 징 에 도착 하 는 가장 빠 른 방식 일 수 있 고 고속 철 도 를 타면 많은 대기 시간 을 들 일 수 있다.산동 에 서 는 고속 철도 가 가장 빠 를 수 있 고 하 이 난 에 서 는 비행기 가 가장 빠 를 수 있다.따라서 코드 를 작성 할 때 알고리즘 의 우열 을 고려 해 야 합 니 다.일반적으로 우 리 는 5 가지 기준 으로 알고리즘 을 평가 하 는데 그것 이 바로 정확성, 건장 성, 가 독성, 시간 복잡 도와 공간 복잡 도 이다.앞의 세 가지 지 표 는 모두 가 이해 할 수 있어 야 한다. 다음은 시간 복잡 도와 공간 복잡 도 에 대해 설명 하 는 데 중심 을 두 어야 한다.
1. 시간 복잡 도:
시간 복잡 도 는 알고리즘 이 처음부터 끝까지 실 행 된 시간 을 나타 낸다. 일반적으로 프로그램 이 간단 한 조작 을 한 번 수행 하 는 데 걸 리 는 시간 은 같다. 예 를 들 어 가감 승제, 할당 조작 등 이다. 따라서 알고리즘 의 시간 복잡 도 는 코드 에서 간단 한 조작 연산 횟수 를 합 친 것 을 말 하 는데 보통 O (Order: 수량 급) 로 표시 한다.시간 복잡 도 는 보통 O (1), O (n), O (log2n), O (nlog2n), O (n2), O (n3), O (2n), O (n!) 등 형식 으로 최고 차 멱 으로 표시 한다. 다음은 몇 가지 흔히 볼 수 있 는 예 를 들 어 알고리즘 의 시간 복잡 도 를 살 펴 보 자.
int n = 100;
int count = 0;
for (int i = 0; i < n; i++) {
count++;
}
이 알고리즘 의 연산 횟수 는 n + 2 이 며, 최고 차 멱 을 취하 고, 복잡 도 는 O (n) 이다.
int n = 100;
int count = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
count++;
}
}
이 알고리즘 은 2 중 for 순환 이 고 연산 횟수 는 n2 + 2 이 며 시간 복잡 도 는 O (n2) 이다.
int[] array = {1,2,3,4,5,6,7,8}; // ,
int k = array.length/2; //
int dest = 5; // , , dest
while(true){ //
if(array[k]==dest){
System.out.println(dest);
break; //
}
if(array[k]>dest){ // dest array[k],
k = k/2;
}
if(array[k]array.length)/2;
}
}
2. 공간 복잡 도
공간 복잡 도 는 일반적으로 하나의 알고리즘 이 실행 과정 에서 저장 공간 크기 를 임시로 차지 하 는 양 을 말한다. 하나의 알고리즘 이 컴퓨터 메모리 에서 차지 하 는 저장 공간 은 저장 알고리즘 자체 가 차지 하 는 저장 공간, 알고리즘 의 입 출력 데이터 가 차지 하 는 저장 공간 과 알고리즘 이 실행 과정 에서 임시로 사용 하 는 저장 공간 등 세 가지 측면 을 포함한다.일부 상황 에서 알고리즘 의 공간 복잡 도 는 임시 점용 저장 공간 을 나타 내 고 복잡 도 는 보통 O (1) 이다.
int a = 10;
int b = 20;
int temp = a;
a = b;
b = temp;
상기 알고리즘 은 두 변수 내용 의 교환 을 실현 하기 위해 temp 를 임시 저장 공간 으로 정의 하기 때문에 이 알고리즘 의 공간 복잡 도 는 O (1) 이다.
3. 총화
기본 개념 을 이해 하 는 것 은 데이터 구 조 를 깊이 공부 하 는 것 이 필수 조건 입 니 다. 또한 알고리즘 을 만 드 는 데 있어 서 우 리 는 시간 복잡 도와 공간 복잡 도 를 결합 시 켜 효율 을 극 대화 해 야 합 니 다. 이 블 로 그 를 만 드 는 것 도 시간 복잡 도 를 깊이 이해 하고 데이터 구 조 를 실현 하 는 구체 적 인 조작 방법 입 니 다. 주목 하 세 요!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
삽입 위치 검색 (자바 구현)삽입 위치 검색 (자바 구현) 정렬 배열 과 목표 값 을 지정 하고 배열 에서 목표 값 을 찾 아 색인 을 되 돌려 줍 니 다.대상 값 이 배열 에 존재 하지 않 으 면 순서대로 삽 입 된 위 치 를 되 돌려 줍 니...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.