본문 바로가기

프로그래밍 공부/알고리즘

(3)
정렬에 관한 정리-2 https://pro-gramm-ing.tistory.com/488 정렬에 관한 정리 - 1 개인적으로 정렬은 코테에서 혹은 개발을 할때 자주 쓰인다고 생각되어서 정렬에 대해 공부를 해두고 싶었다. 그래서 이 기회에 리트코드에 있는 정렬에 대한 글을 보고 정리를 해봤다. 1.정렬 pro-gramm-ing.tistory.com 앞서 비교 기반 정렬을 살펴 보았다. 이번에는 비비교 기반 정렬을 알아보고자 한다. 직관적이거나 만들기 쉽지는 않지만 비교적 실행속도가 빠르고 효율적이다. 비비교 기반 정렬 1. 계산 정렬(Counting Sort) 이 정렬방식은 값을 인덱스와 매핑을 다시 시킨 후 정렬을 하는 방식이다. 계산 정렬은 다음과 같은 상황에서 사용이 가능하다. - 1.배열에 중복적인 요소들이 있는경우 e..
정렬에 관한 정리 - 1 개인적으로 정렬은 코테에서 혹은 개발을 할때 자주 쓰인다고 생각되어서 정렬에 대해 공부를 해두고 싶었다. 그래서 이 기회에 리트코드에 있는 정렬에 대한 글을 보고 정리를 해봤다. 1.정렬의 핵심원리는 무엇일까 정렬의 문제는 어떻게 집합에 있는 아이템들을 순서대로 놓을지이다. 어떤 순서대로 놓을지는 전적으로 비교방법에 따라 달라진다. 정렬의 기초는 각각의 아이템중 공통된 특성들끼리 묶어 재배열하는 것이다. 컴퓨터 공학에서는 순서에 관한 형식이 있다. 그 형식은 다음과 같다. 전제: 만약 아이템이 a 와 b 가 주어졌다면(Law of trichotomy(=삼분법칙)) 1. 아래의 연산 중 하나는 참이어야 한다. a > b | a = b | a < b 2. 그리고 다음과 같은 식이 성립되어야 한다. (tran..
선택 정렬 비교가 상대적으로 많다 버블 소트보다는 정렬 횟수가 적다 int[] a = {5,1,6,2,4,3}; int size = a.length; int min = 0; int temp = 0; for(int i = 0 ; size > i ;i++){ min=i; for(int j = i+1 ; size > j ; j++){ if(a[min] > a[j]){ min=j; } } temp = a[min]; a[min] = a[i]; a[i] = temp; }