디렉토리
[힐]
학생 ID 20182323 2019-2020-1 "객체 지향 프로그래밍 및 데이터 구조"주 7 학습 요약
내용 요약 학습
제 12 장
- 알고리즘 분석
특정 문제, 또는 단계에 대한 설명을 해결하기위한 방법 알고리즘은 무엇입니까.
무엇 (다음 기준) 알고리즘을 수행합니다
- 정확성
- 가독성
- 견고성
- 통용성
- 효율성과 저장 공간 요구 사항
[시간] 및 [공간] 복잡성 : 얼음과 불의 노래
시간 복잡성 : 알고리즘 분석, 실행 문 T (n)은 n은 함수의 크기에 대한 질문은의 총 수는, 다음 N과 T (n)를 분석하고 크기의 순서 (N) T의 변화를 결정합니다.
T (N) = O (F (N)) 알고리즘의 시간 복잡도는 알고리즘에 의해 표시된 시간의 측정 값이다. 이것은 문제가 크기 증가이고, 알고리즘의 실행 시간은 알고리즘의 복잡도라는 프로그레시브 성장 속도이고, f (n)의 성장과 동일하다, 시간 복잡도이라.
F (n)은 문제의 크기 (N)의 함수이다. 이러한 대문자 O는 () 알고리즘 시간 표기의 복잡성을 반영하기 위해, 우리는 큰 O 표기법이라고
아래 그림과 같이 일반적인 시간 복잡도 :
도 1에 도시 된 실시 예의 각 시간 복잡도 :
제 14 장
- 스택
무엇 스택이다 스택 정렬 된 수집, 추가 및 삭제 요소 통상 동작의 선단은, 대응하는 하단 발생라고도 동일한 단부에서 발생하고있다. (교체 아웃 성)
스택 작업 :
전체 스택 후위 표현식을 사용하여 계산 : 후위 표현식은 두 개의 피연산자의 뒤에 괄호 연산자를 포함하지 않는, 모든 계산은 (연산자를 고려하지 왼쪽에서 오른쪽으로 엄격에서, 시퀀스 연산자에 표시 적층 구조 접미사 식의 계산 결과를 이용하여 (1 + 2) * (3), 즉 (3) * 2 + 1과 같은 우선 순위 규칙.
프로그래밍은 두 개의 큐를 구현 :
- 목록 구현
- 배열 달성
제 15 장
- 큐
- 어떤 큐이다 대기열은 그것이 삽입 후단 테이블과 동일한 스택 큐 제한된 동작 동안 만 테이블의 선단부에 삭제를 허용하는 특별한 특별한 선형 형태이다 선형 테이블. (선입)
- 큐
- 그리고 다음과 같이 스택 :
- 각 어레이가 작성되면, 다음의 요소는 기존의 어레이를 확대하도록 배열의 크기를 두 배로하기 위해 첨가된다.
- 요소가 제거 될 때마다, 얼마나 많은 여유 공간이 감지 배열입니다. 어레이의 크기의 1/4 배열의 요소의 개수가 일 때, 상기 어레이는 반감된다.
- 이 제외 :
- 이 FIFO이기 때문에 대부분의 시작 큐의 전면에서 제거. 우리는 데이터의 개수를 제거한 때, 큐 데이터 배열의 중간 부에 저장된다. 민 등의 데이터 큐의 데이터 ID의 끝단은 데이터 ID의 시작되도록 HeadIndex의 num 인 - HeadIndex 큐 내의 데이터 요소의 수이다.
- 대기열의 데이터 요소의 수가 배열 공간의 1/4하면 어레이 절반, 그리고 가장 왼쪽 왼쪽 데이터 어레이를 대기열로 이동된다. 즉 NUM- = HeadIndex; HeadIndex = 0;
- 그리고 다음과 같이 스택 :
图中,HeadIndex=2;Num=5;
- 프로그래밍은 두 개의 큐를 구현 :
- 목록 구현
- 배열 달성
교과서 학습과 문제 해결 과정
질문 1 : 배열 큐를 사용하는 경우, 왜 다른 것보다 더 나은 환상의 배열 배열?
문제 1 해결 방법 :
장점의 배열 :
수자원의 효율적인 사용. 때 배열로 큐, 당신은 것입니다 가짜 전체 큐 상황, 읽기로 이동하고 데이터를 기록하지 않는 경우. 즉, 어레이의 제 1 단부 있지만 어레이 전체 또는 비어, 또한 순환 큐 어레이 배열이 결정되는 배열의 단부는 헤드가 비어 있는지 때 순환 큐를 형성하도록 논리적으로 접속 헤드와 꼬리 배열 전체 것을 제외 데이터가 비어 계속 저장하지 않습니다.
하지만, 단점은 여전히 환상의 배열이 있습니다 :
원형 큐 헤드 포인터 언론부터 꼬리 포인터는 대기열에, 머리와 꼬리 포인터의 원인이 꼬리 포인터를 잡을 앞으로 머리, 각 팀 빈 및 전체 팀 동일 디큐 포인터. 따라서, 조건이 전방으로 판별 할 수없는 후방 == 큐는 "빈"은 "전체."
지식을 확장 :
은 "거짓 유출 '현상을 극복 벡터 공간의 방법 전체 사용은 다음과 같습니다 벡터 공간이 꼬리 고리에 머리를 상상이 벡터는 순환 벡터이다라고. 내부 큐 환상 (링) 큐라고 저장된다.
질문 2 : 장점과 연결리스트와 배열의 단점
문제 2 해결 방법 :
차이 :
- 스토리지 어레이 구조 순서 사슬 연쇄 저장 구조이다.
- 목록 엘리먼트가 순서 소자 어레이에 대한 포인터에 의해 연결되어있는 모든 요소를 순차적으로 저장된다.
- 필요 최대 길이 때문에, 배열의 요소를 찾아 비교적 간단하지만, 삽입 및 삭제를 더 복잡, 삽입 및 소자 어레이의 삭제가리스트의 길이의 확대를 구현하는 움직이는 요소, 비교적 간단하고 비교적 용이하지만, 더 어려운 원소 발견 때 확장 목록의 길이보다 편리이 최대 길이에 도달 지정된 시작 프로그램,.
같은 점 :
두 구조가 순차적으로 저장된 데이터가 구현 될 수 있고, 모델은 선형 구조로 구성 하였다.
그 과정에서 해결 코드 디버깅 및 문제
- 질문 1 : 연습을 프로그래밍 할 때 첫 번째 위치를 정렬 할 때, 관여하지 않습니다
해결 방법 :
키 코드
public void SelectionSortList(){
int min;
SelectionSortNode a = null;
SelectionSortNode b = null;
for (a=list.next;a!=null;a=a.next){
for (b=a.next;b!=null;b=b.next){
if (a.num>b.num){
min = b.num;
b.num = a.num;
a.num = min;
}
}
}
}
헤드 노드의 스킵에서 검사, A = list.next 결과 발견 한 후, 첫 번째 노드는이 분류에 포함되지 않고, 생략되고;
수정 된 코드 :
public void SelectionSortList(){
int min;
SelectionSortNode a = null;
SelectionSortNode b = null;
for (a=list;a!=null;a=a.next){
for (b=a.next;b!=null;b=b.next){
if (a.num>b.num){
min = b.num;
b.num = a.num;
a.num = min;
}
}
}
}
입력 A = 목록, 다시 실행됩니다.
코드 호스팅
페어 피어 검토
댓글 템플릿 :
문제 나 블로그를 학습 가치 :
- 학습 콘텐츠, 문제의 깊은 분석의 어려움의 증가로
- 정보에 계속 액세스 문제를 해결하기위한 노력
코드 학습이나 문제 가치가있다 :
- 코드의 로직을 개선 할 필요가있다
- 더 좋을 것이다 주석을 추가 할 적절한 코드
12 점 : 점수를 바탕으로,이 블로그 점수를 제공합니다. 다음과 같이 점수는 다음과 같습니다
올바른 사용법 마크 다운 문법 (1 점) :
- 마크 다운 별도의 포인트를 사용하지 마십시오
- 구문 오류가 플러스 아니다 (링크가 작동하지 않습니다 형성하지 않고, 목록 ... 잘못된 것입니다)
- 조판 혼란 플러스 아니다
요소 (1 점) 서식 범위
- 누락 "교과서 학습과 문제 해결 과정"포인트없이
- 포인트없이 "그 과정에서 문제 해결 및 디버깅 코드"의 부족
- 관리 코드는 포인트없이 열 수 없습니다
- "자매 결연 및 동료 평가는"포인트없이 열 수 없습니다 누락
- "지난 주에 잘못된 제목 시험을 요약"누락 플러스가 될 수 없습니다
- "진행률 표시 줄"의 부족은 플러스가 될 수 없습니다
- "참조"의 부족은 플러스가 될 수 없습니다
교과서 학습과 문제 해결 과정 (2 점)
코드 디버깅 및 문제 해결 과정 (2 점)
주 300여 가지 유효한 코드 (플러스 0)
기타 플러스 포인트 :
- 금요일 1 포인트 전에 머리 블로그
- 정서 경험은 큰 빈 1 점을 떠나지 않아
- 진행 바는 학습 시간을 기록하고 1 점의 상황을 개선
- 손 -에 새로운 코드를 작성가 있습니다, 1 점을 추가
- 깊이 잘못된 질문 학습, 1 점을 추가
- 댓글 심각하게, 나는 문제 및 블로그 코드 플러스 1 점을 지적 할 수
- 쌍 정통 플러스 1 점을 학습
댓글은 학생들의 블로그와 코드를했다
- 이번 주 학습 페어링
- 쌍 학생 학생 ID 20182315
- 쌍 사진
- 페어 학습 콘텐츠
- 알고리즘 분석 스택 큐
기타 (지각, 사고, 등, 선택 사양)
- 조금 무거운 작업을 학습이 2 주 더 어려운 일, 및 연료 유를 배울 수 있습니다.
- 그것은 과외 지식을 그릴 필요가 아무것도 다른 사람의 블로그, 경험의 교환을보기 위해 더 많은 수 없다
학습 진행 막대
코드 라인의 수는 (/ 축적 추가) | 블로그 양 (/ 축적 추가) | 시간 학습 (/ 축적를 추가) | 중요한 성장 | |
---|---|---|---|---|
골 | 10,000 선 | (30) | 400시간 | |
첫 번째 주 | 77분의 77 | 2/2 | 15/15 | |
셋째 주 | 501분의 424 | 3/5 | 30/30 | |
넷째 주 | 894분의 393 | 2/7 | 30/30 | |
다섯째 주 | 1,214분의 320 | 1/8 | 30/30 | |
여섯째 주 | 2,118분의 904 | 2/10 | 30/30 | |
주 7 | 3,468분의 1,350 | 3/13 | 30/30 |
계획 연구 시간 : 25시간
실제 공부 시간 : 20시간
개선 :