본문 바로가기 메뉴 바로가기

덕's IT Story

프로필사진
  • 글쓰기
  • 관리
  • 태그
  • 방명록
  • RSS

덕's IT Story

검색하기 폼
  • 분류 전체보기 (198)
    • IT 이야기 (31)
      • 그 외 (15)
      • 대외활동 소식 (9)
      • 컴퓨터 지식 (7)
    • 클라우드&오픈스택 (8)
      • 클라우드 (2)
      • 오픈스택 (6)
    • 프로그래밍 (86)
      • C/C++ (1)
      • 자료구조&알고리즘 (11)
      • 다음API (6)
      • OpenCV (2)
      • RabbitMQ (6)
      • Git&GitHub (3)
      • Web (2)
      • 자바스크립트 (12)
      • Spring (7)
      • Java (36)
    • Ruby&Rails (21)
      • Rails (16)
      • Gem (5)
    • OS (20)
      • 리눅스&우분투 (12)
      • CentOS (5)
      • 안드로이드 (3)
    • 해킹&보안 (5)
      • 무선해킹 (2)
      • 시스템해킹 (3)
  • 방명록

프로그래밍 (86)
삽입정렬(Insertion Sort)

삽입정렬(Insertion Sort)는 이미 정렬되어 있는 i 개 짜리 배열에 하나의 원소를 더 더하여 정렬된 i+1개 짜리 배열을 만드는 과정을 반복한다. 선택정렬(Selection Sort)과 버블정렬(Bubble Sort)이 n개짜리 배열로부터 시작하여 그 크기를 하나씩 줄여나가는데 반하여, 삽입정렬은 1개짜리 배열로부터 시작하여 그 크기를 하나씩 늘려가는 정렬이다. 위의 예제를 살펴보면 배열 A[]에서 루프문을 통해 i가 두번째 원소 부터 배열의 끝 원소까지 루프문을 돌면서 A[i]번째의 원소를 자리에 알맞게 넣는다. i가 두번째 원소를 가리킬때 A[2]인 10의 자리는 A[1]인 29와 위치가 바껴야 하므로 자리가 교체된다. i가 세번째 원소를 가르킬때 A[3]인 14의 위치는 A[1]인 10 ..

프로그래밍/자료구조&알고리즘 2014. 4. 22. 21:08
버블정렬(Bubble Sort)

버블정렬(Bubble Sort)도 선택정렬(Selection Sort)처럼 제일 큰 원소를 옮기는 작업을 반복하는 정렬이다. 다만, 제일 큰 원소를 오른쪽으로 옮기는 방법이 다를 뿐이다. 선택정렬(Selection Sort) 이란 ? 클릭 선택정렬(Selection Sort) 버블정렬(Bubble Sort)는 위의 예제 처럼 배열의 처음 인덱스부터 n-1 인덱스까지 이동하면서 인접하는 다음 인덱스의 원소와 크기를 비교하여 순서를 바로 잡아 나간다. 이 과정을 반복하게 되면 배열의 맨끝에는 배열의 가장 큰 원소가 자리하게 된다. 그러면 배열의 제일 마지막을 잊어버리고 이를 반복하게 되면 배열이 차례대로 끝에서 부터 내림차순으로 정렬되게 된다. 버블정렬(Bubble Sort)의 슈도코드는 다음과 같다. 버블..

프로그래밍/자료구조&알고리즘 2014. 4. 22. 20:03
선택정렬(Selection Sort)

선택정렬(Selection Sort)는 원리가 가장 간단한 정렬 알고리즘 중의 하나다. 우선 배열 A[1...n]에서 가장 큰 원소를 찾아 이 원소와 배열의 맨 끝자리에 있는 A[n]과 자리를 바꾼다. 그러면 방금 맨 뒷자리로 옮긴 원소, 즉 가장 큰 원소는 자기 자리를 찾았으므로 더 이상 신경쓰지 않아도 된다. 이 원소는 정렬이 끝났다고 볼 수 있으므로 이제 이 원소를 제외한 나머지 원소들로 같은 작업을 반복하면 된다. 간결하게 나타내면 각 루프마다최대 원소를 찾는다.최대 원소와 맨 오른쪽 원소를 교환한다.맨 오른쪽 원소를 제외한다.하나의 원소만 남을 때까지 위의 루프를 반복한다. 예를 들면, 정렬하고자 하는 배열(Initial array)에서 가장 큰 수(37)을 찾아 배열의 맨 끝 원소인 13과 자..

프로그래밍/자료구조&알고리즘 2014. 4. 22. 18:08
알고리즘이란?

알고리즘이란 어떤 작업을 수행하기 위해 입력을 받아 원하는 출력을 만들어내는 과정을 기술한 것이다. 알고리즘을 설계하기 위해서는 우선 해야 할 작업을 명확하게 명시해야 한다. 설계하려는 알고리즘이 "무엇을" 하는지는 입력과 출력에 의해 명시할 수 있다. 예를 들어, 학생 100명의 시험점수를 입력으로 받아 최고점을 출력하는 작업을 한다면 입출력을 다음과 같이 표현할 수 있다. 입력 : 100개의 점수출력 : 입력된 100개의 점수 중 최대값 이 입출력을 다음과 같이 좀더 구체적으로 표현할 수도 있다. 입력 : 100개의 변수 x[1],...,x[100]의 값출력 : x[1],...,x[100] 중 최대값 이런 입출력을 요구하는 알고리즘은 대략 다음과 같은 모양을 가질 것이다. maxScore(x[], n..

프로그래밍/자료구조&알고리즘 2014. 4. 22. 17:18
레드블랙 트리(Red-black tree)

이진검색트리는 저장과 검색에 평균 Θ()시간이 소요되지만 운이 나쁘면 트리의 모양이 균형을 잘 이루지 못한다. 균형이 많이 깨지면 Θ(n)에 근접한 시간이 소요될 수도 있다. 그래서 고안해 낸 것이 균형잡힌 이진검색트리이다. 균형잡힌 이진검색트리는 최악의 경우에도 이진트리의 균형이 잘 맞도록 유지한다. 균형잡힌 이진검색트리로 대표적인 것은 레드블랙트리와 AVL트리다. 레드블랙 트리는 자가균형이진탐색 트리(self-balancing binary search tree)로써, 대표적으로 연관배열(associative array) 등을 구현하는데 쓰이는 자료구조이다. 레드-블랙 트리는 복잡한 자료구조이지만, 실 사용에서 효율적이고, 최악의 경우에도 상당히 우수한 실행 시간을 보인다. 트리에 n개의 원소가 있을때..

프로그래밍/자료구조&알고리즘 2014. 4. 15. 22:47
이진트리의 순회 (Binary Tree Traversal)

이진검색트리같은 이진트리(Binary tree) 구조의 자료구조에서 검색, 출력 등의 이유로 전체 노드들을 방문(visit)하는 것을 순회(traversal)이라고 합니다. 아시다 싶이 이진트리의 구조는 최상위에 루트(root)가 존재하고 좌측에는 왼쪽 서브트리가 , 오른쪽에는 오른쪽 서브트리의 모양을 갖습니다. 대표적인 이진트리 순회 방법에 3가지의 방법이 있습니다. 루트의 방문 순서에 따라 구분이 됩니다. 1. 전위 순회 (Preorder Traversal)Root -> Left Tree -> Right Tree ( 루트를 제일 처음에 방문 )2. 중위 순회 (Inorder Traversal)Left Tree -> Root -> Right Tree ( 루트를 중간에 방문 )3. 후위 순회 (Posto..

프로그래밍/자료구조&알고리즘 2014. 4. 14. 18:36
이전 1 ··· 8 9 10 11 다음
이전 다음
최근에 올라온 글
  • [책 리뷰] 자바 최적화 (Optimizing J⋯
  • Spring Webflux + JDBC(혹은 bl⋯
  • [macOS Mojave] Evernote (혹은⋯
  • spring-boot-starter-webflux⋯
TAG
  • Message Queue
  • 리눅스
  • rabbitmq
  • CSS
  • 컴퓨터
  • Java
  • IT
  • 자료구조
  • 이펙티브 자바
  • codecademy
  • install
  • 다음
  • html
  • gem
  • 프로그래밍
  • ruby on rails
  • ruby
  • 다음지도
  • 웹프로그래밍
  • 알고리즘
  • 오픈스택
  • 클라우드 컴퓨팅
  • ubuntu
  • 우분투
  • Rails
  • javascript
  • IceHouse
  • 다음지도 API
  • 티스토리 초대장
  • OpenStack
more
글 보관함
  • 2019/06 (1)
  • 2018/12 (2)
  • 2018/11 (2)
  • 2018/10 (1)
  • 2018/07 (2)
Total
695,667
Today
68
Yesterday
235

Copyright ⓒ 2018 kkd927. All rights reserved.

티스토리툴바