Juwan Park :: 2016/08/24 글 목록

.sort 메소드로 안정 정렬 구현하기

정렬 알고리즘에 대해 공부하다 보면 안정 정렬(stable sort)과 불안정 정렬(unstable sort)에 대해 들어 보신 적이 있을 것입니다. 이 둘의 차이가 무엇인지를 일단 간단히 설명드리자면, 정렬 키 값이 같은 데이터들에 대해 정렬 전의 순서가 정렬 후에도 유지될 것이 보장되면 안정 정렬이라고 하고, 키 값이 같은 데이터들의 순서가 정렬 후 서로 바뀔 가능성이 있으면 불안정 정렬이라고 합니다. 예를 들어, 배열이 [4, 4, 1, 6, 7, 9, 5, 8, 3, 2] 이렇게 처음에 똑같은 4가 두 개 있을 때 첫 번째 4가 정렬 후에도 항상 두 번째 4보다 앞에 있게 되면 안정 정렬이고, 첫 번째 4가 정렬 후에 두 번째 4보다 뒤로 갈 가능성이 있으면 불안정 정렬입니다. 그러면, 루비의 ...

★프로그래밍/Ruby :: 2016.08.24 17:22

.shuffle - 배열의 원소들을 뒤섞는 메소드

이전 포스트에서 루비 프로그래밍에는 배열에 .sort 메소드가 있다는 글을 작성했습니다..sort 메소드는 별도의 알고리즘 구현 없이 원소들이 이리저리 뒤섞인 배열을 원소의 값대로 정렬해 주는 메소드라고 하였습니다. 그러면 정반대로 원소들을 이리저리 뒤섞는 메소드도 있을까요? 네. 있습니다.일단 아래 코드를 봅시다. arr = Array.new 1.upto(10) {|x| arr

★프로그래밍/Ruby :: 2016.08.24 12:59

.sort - 배열의 값을 정렬하는 메소드

루비에서 사용하는 배열에는 특징이 있습니다.그 특징들 중 하나로, 자체적인 정렬 메소드를 제공한다는 점입니다.흔히 정렬 하면 정렬 알고리즘을 코드에 짜 넣는 경우가 일반적이지만, 루비에서는 정렬 메소드를 제공함으로써 배열의 정렬 알고리즘을 코딩하는 수고를 덜 수 있습니다.일단 다음 코드를 봅시다. arr = [4, 1, 2, 5, 3] (arr.length - 2).downto(0) do |x| 0.upto(x) do |y| arr[y], arr[y+1] = arr[y+1], arr[y] if arr[y] > arr[y+1] end end puts sprintf("%s", arr) 이 코드를 실행하면 맨 처음 [4, 1, 2, 5, 3]으로 세팅된 배열 arr를 오름차순 정렬하여 [1, 2, 3, 4, ..

★프로그래밍/Ruby :: 2016.08.24 00:03
Today 12    Yday 63    Tot 65,494
Juwan Park
Juwan Park's blog is powered by Daum and TISTORY.
Contemporary Blue for TISTORY.
Designed by Juwan Park. Creative Commons License
▲ TOP