20182323 2019-2020-1 "데이터 구조와 객체 지향 프로그래밍"주 7 학습 요약

디렉토리

[힐]

학생 ID 20182323 2019-2020-1 "객체 지향 프로그래밍 및 데이터 구조"주 7 학습 요약

내용 요약 학습

제 12 장

  • 알고리즘 분석
  1. 특정 문제, 또는 단계에 대한 설명을 해결하기위한 방법 알고리즘은 무엇입니까.

  2. 무엇 (다음 기준) 알고리즘을 수행합니다

    1. 정확성
    2. 가독성
    3. 견고성
    4. 통용성
    5. 효율성과 저장 공간 요구 사항
  3. [시간] 및 [공간] 복잡성 : 얼음과 불의 노래

  • 시간 복잡성 : 알고리즘 분석, 실행 문 T (n)은 n은 함수의 크기에 대한 질문은의 총 수는, 다음 N과 T (n)를 분석하고 크기의 순서 (N) T의 변화를 결정합니다.

  • T (N) = O (F (N)) 알고리즘의 시간 복잡도는 알고리즘에 의해 표시된 시간의 측정 값이다. 이것은 문제가 크기 증가이고, 알고리즘의 실행 시간은 알고리즘의 복잡도라는 프로그레시브 성장 속도이고, f (n)의 성장과 동일하다, 시간 복잡도이라.

  • F (n)은 문제의 크기 (N)의 함수이다. 이러한 대문자 O는 () 알고리즘 시간 표기의 복잡성을 반영하기 위해, 우리는 큰 O 표기법이라고

  1. 아래 그림과 같이 일반적인 시간 복잡도 :

  2. 도 1에 도시 된 실시 예의 각 시간 복잡도 :

제 14 장

  • 스택
  1. 무엇 스택이다 스택 정렬 된 수집, 추가 및 삭제 요소 통상 동작의 선단은, 대응하는 하단 발생라고도 동일한 단부에서 발생하고있다. (교체 아웃 성)

  2. 스택 작업 :

  3. 전체 스택 후위 표현식을 사용하여 계산 : 후위 표현식은 두 개의 피연산자의 뒤에 괄호 연산자를 포함하지 않는, 모든 계산은 (연산자를 고려하지 왼쪽에서 오른쪽으로 엄격에서, 시퀀스 연산자에 표시 적층 구조 접미사 식의 계산 결과를 이용하여 (1 + 2) * (3), 즉 (3) * 2 + 1과 같은 우선 순위 규칙.

  4. 프로그래밍은 두 개의 큐를 구현 :

    1. 목록 구현
    2. 배열 달성

제 15 장

  1. 어떤 큐이다 대기열은 그것이 삽입 후단 테이블과 동일한 스택 큐 제한된 동작 동안 만 테이블의 선단부에 삭제를 허용하는 특별한 특별한 선형 형태이다 선형 테이블. (선입)
    1. 그리고 다음과 같이 스택 :
      1. 각 어레이가 작성되면, 다음의 요소는 기존의 어레이를 확대하도록 배열의 크기를 두 배로하기 위해 첨가된다.
      2. 요소가 제거 될 때마다, 얼마나 많은 여유 공간이 감지 배열입니다. 어레이의 크기의 1/4 배열의 요소의 개수가 일 때, 상기 어레이는 반감된다.
    2. 이 제외 :
      1. 이 FIFO이기 때문에 대부분의 시작 큐의 전면에서 제거. 우리는 데이터의 개수를 제거한 때, 큐 데이터 배열의 중간 부에 저장된다. 민 등의 데이터 큐의 데이터 ID의 끝단은 데이터 ID의 시작되도록 HeadIndex의 num 인 - HeadIndex 큐 내의 데이터 요소의 수이다.
      2. 대기열의 데이터 요소의 수가 배열 공간의 1/4하면 어레이 절반, 그리고 가장 왼쪽 왼쪽 데이터 어레이를 대기열로 이동된다. 즉 NUM- = HeadIndex; HeadIndex = 0;

    图中,HeadIndex=2;Num=5;
  1. 프로그래밍은 두 개의 큐를 구현 :
    1. 목록 구현
    2. 배열 달성

교과서 학습과 문제 해결 과정

  • 질문 1 : 배열 큐를 사용하는 경우, 왜 다른 것보다 더 나은 환상의 배열 배열?

  • 문제 1 해결 방법 :

    1. 장점의 배열 :

      자원의 효율적인 사용. 때 배열로 큐, 당신은 것입니다 가짜 전체 큐 상황, 읽기로 이동하고 데이터를 기록하지 않는 경우. 즉, 어레이의 제 1 단부 있지만 어레이 전체 또는 비어, 또한 순환 큐 어레이 배열이 결정되는 배열의 단부는 헤드가 비어 있는지 때 순환 큐를 형성하도록 논리적으로 접속 헤드와 꼬리 배열 전체 것을 제외 데이터가 비어 계속 저장하지 않습니다.

    2. 하지만, 단점은 여전히 ​​환상의 배열이 있습니다 :

      원형 큐 헤드 포인터 언론부터 꼬리 포인터는 대기열에, 머리와 꼬리 포인터의 원인이 꼬리 포인터를 잡을 앞으로 머리, 각 팀 빈 및 전체 팀 동일 디큐 포인터. 따라서, 조건이 전방으로 판별 할 수없는 후방 == 큐는 "빈"은 "전체."

    3. 지식을 확장 :

      은 "거짓 유출 '현상을 극복 벡터 공간의 방법 전체 사용은 다음과 같습니다 벡터 공간이 꼬리 고리에 머리를 상상이 벡터는 순환 벡터이다라고. 내부 큐 환상 (링) 큐라고 저장된다.

  • 질문 2 : 장점과 연결리스트와 배열의 단점

  • 문제 2 해결 방법 :

  1. 차이 :

    1. 스토리지 어레이 구조 순서 사슬 연쇄 저장 구조이다.
    2. 목록 엘리먼트가 순서 소자 어레이에 대한 포인터에 의해 연결되어있는 모든 요소를 ​​순차적으로 저장된다.
    3. 필요 최대 길이 때문에, 배열의 요소를 찾아 비교적 간단하지만, 삽입 및 삭제를 더 복잡, 삽입 및 소자 어레이의 삭제가리스트의 길이의 확대를 구현하는 움직이는 요소, 비교적 간단하고 비교적 용이하지만, 더 어려운 원소 발견 때 확장 목록의 길이보다 편리이 최대 길이에 도달 지정된 시작 프로그램,.
  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. 요소 (1 점) 서식 범위

    • 누락 "교과서 학습과 문제 해결 과정"포인트없이
    • 포인트없이 "그 과정에서 문제 해결 및 디버깅 코드"의 부족
    • 관리 코드는 포인트없이 열 수 없습니다
    • "자매 결연 및 동료 평가는"포인트없이 열 수 없습니다 누락
    • "지난 주에 잘못된 제목 시험을 요약"누락 플러스가 될 수 없습니다
    • "진행률 표시 줄"의 부족은 플러스가 될 수 없습니다
    • "참조"의 부족은 플러스가 될 수 없습니다
  3. 교과서 학습과 문제 해결 과정 (2 점)

  4. 코드 디버깅 및 문제 해결 과정 (2 점)

  5. 주 300여 가지 유효한 코드 (플러스 0)

  6. 기타 플러스 포인트 :

    • 금요일 1 포인트 전에 머리 블로그
    • 정서 경험은 큰 빈 1 점을 떠나지 않아
    • 진행 바는 학습 시간을 기록하고 1 점의 상황을 개선
    • 손 -에 새로운 코드를 작성가 있습니다, 1 점을 추가
    • 깊이 잘못된 질문 학습, 1 점을 추가
    • 댓글 심각하게, 나는 문제 및 블로그 코드 플러스 1 점을 지적 할 수
    • 쌍 정통 플러스 1 점을 학습

댓글은 학생들의 블로그와 코드를했다

기타 (지각, 사고, 등, 선택 사양)

  • 조금 무거운 작업을 학습이 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시간

  • 개선 :

참고 자료

추천

출처www.cnblogs.com/caoqian1314/p/11787996.html