값이 정렬된 상태를 유지하는 배열정렬된 배열에서의 삽입배열 앞 또는 중간에 삽입: N + 2비교 값이 적더라도 이동해야 할 수가 많아지기 때문에 단계 수가 동일배열의 맨 끝에 값을 삽입: N + 1검색 후 기존 값을 이동하지 않아도 되기 때문에 N+1정렬된 배열과 일반
📖 '누구나 자료구조와 알고리즘' 책을 공부한 내용을 담고 있습니다.
4-1. 버블 정렬
📖 '자료구조와 알고리즘' 책을 공부한 내용을 담고 있습니다. 알고리즘의 효율성을 빅 오 표기법으로 많이 사용한다. 하지만, 빅 오 표기법이 모든 알고리즘을 정확하게 표현하지는 않는다. 이번 장에서는 동일한 빅 오를 갖은 알고리즘 중에서 더 효율적인 알고리즘을 고르는
📖 '누구나 자료구조와 알고리즘' 책에 대해 공부한 내용을 담고 있습니다.이전 장까지 빅 오 표기법은 최악의 시나리오 즉, 가장 좋지 않은 상황에 초점을 두어 표현하였다. 하지만 항상 최악의 시나리오만 발생하지 않는다. 6장에서는 모든 시나리오를 고려하는 방법을 배워
프로젝트에서 중요한 부분이 성능 최적화이다. 최적화하기 위해선 현재 코드가 얼마나 효율적인지 알아야 한다. 그래야 최적화가 필요한지를 알 수 있다. 이번 장에서는 최적화의 첫 단계, 코드 효율성을 측정하는 방식에 대해서 알아보자.다음 예제는 수 배열을 받아 모든 짝수의
이번 장에서는 해시테이블(Hash Table)이라는 특수한 자료구조에 대해서 알아보자해시 테이블(Hash Table) 이란? : 키(key)와 값(value) 쌍으로 이뤄진 리스트해시 테이블은 다양한 프로그래밍 언어에서 해시, 맵, 해시 맵 딕셔너리, 연관 배열 등의
📖 '누구나 자료구조와 알고리즘'책을 공부한 내용을 담고 있습니다!'누구나 자료구조와 알고리즘'책을 통해서 다양한 자료구조에 따른 성능 차이에 대해 배우고 있다. 책을 공부하기 전보다 자료구조에 대해 이해를 바탕으로 효율적인 코드를 고민하게 된다. 이번 장은 자료구조
📖 '누구나 자료구조와 알고리즘'책을 공부한 내용을 담고 있습니다!재귀(recursion)는 고급 알고리즘을 이해하기 위한 컴퓨터 과학의 핵심 개념입니다. 재귀를 잘 사용하면 까다로운 문제 유형을 간단하게 풀 수 있다. 숫자 10를 받아 10부터 0까지 숫자를 표시한
12장에서 재귀 코드의 속도를 느리게 만드는 원인을 찾고, 빅 오 관점에서 어떻게 나타내는지 배워보자.재귀 함수를 사용해서 배열에서 최댓값을 찾는다.예를 들어, 배열 1,2,3,4에서 최댓값을 찾는다면, 첫 번째 원소인 1과 배열 2,3,4의 최댓값을 비교한다. 이어서
실제 배열을 정렬할 때 버블 정렬과 선택 정렬, 삽입 정렬은 잘 사용하지 않는다. 컴퓨터 언어의 내장 함수를 사용해 시간과 노력을 아껴준다. 그 중 퀵 정렬(Quicksort)은 정렬 알고리즘으로 많이 쓰인다. 퀵 정렬 동작 방식을 통해 재귀가 어떻게 알고리즘의 속도를
\*\*연결 리스트(Linked List)항목의 리스트를 표현하는 자료 구조연결 리스트는 배열과 다르게 동작한다. 연결 리스트 내 데이터는 연속된 메모리 블록이 아니라 컴퓨터 메모리 전체에 걸쳐 여러 셀에 퍼져 있을 수 있다. 메모리에 곳곳에 흩어진 연결되니 데이터는
데이터를 특정 순서로 정리할 때, 가장 효율적인 알고리즘은 무엇일까? 정렬 알고리즘은 아무리 빨라도 O(logN)이다. 정렬된 배열에선 삽입과 삭제할 때 O(N)이 걸린다. 해시 테이블은 검색, 삽입, 삭제가 O(1)이지만, 순서를 유지하지 못한다.순서를 유지하면서 빠