'2016/08/24'에 해당되는 글 4건
- 2016.08.24 .sort 메소드로 안정 정렬 구현하기
- 2016.08.24 .shuffle - 배열의 원소들을 뒤섞는 메소드
- 2016.08.24 .sort 메소드 관련 보충 포스팅
- 2016.08.24 .sort - 배열의 값을 정렬하는 메소드
정렬 알고리즘에 대해 공부하다 보면 안정 정렬(stable sort)과 불안정 정렬(unstable sort)에 대해 들어 보신 적이 있을 것입니다. 이 둘의 차이가 무엇인지를 일단 간단히 설명드리자면, 정렬 키 값이 같은 데이터들에 대해 정렬 전의 순서가 정렬 후에도 유지될 것이 보장되면 안정 정렬이라고 하고, 키 값이 같은 데이터들의 순서가 정렬 후 서로 바뀔 가능성이 있으면 불안정 정렬이라고 합니다. 예를 들어, 배열이 [4, 4, 1, 6, 7, 9, 5, 8, 3, 2] 이렇게 처음에 똑같은 4가 두 개 있을 때 첫 번째 4가 정렬 후에도 항상 두 번째 4보다 앞에 있게 되면 안정 정렬이고, 첫 번째 4가 정렬 후에 두 번째 4보다 뒤로 갈 가능성이 있으면 불안정 정렬입니다. 그러면, 루비의 ...
이전 포스트에서 루비 프로그래밍에는 배열에 .sort 메소드가 있다는 글을 작성했습니다..sort 메소드는 별도의 알고리즘 구현 없이 원소들이 이리저리 뒤섞인 배열을 원소의 값대로 정렬해 주는 메소드라고 하였습니다. 그러면 정반대로 원소들을 이리저리 뒤섞는 메소드도 있을까요? 네. 있습니다.일단 아래 코드를 봅시다. arr = Array.new 1.upto(10) {|x| arr
이전에 루비에서 배열 정렬에 사용되는 .sort 메소드에 대해 포스팅을 했습니다.이 포스트에서는 시간관계상 쓰지 못했던 내용에 대해 보충합니다.자, 먼저 2차원 배열의 정렬 예입니다. gfriend = Array.new gfriend
루비에서 사용하는 배열에는 특징이 있습니다.그 특징들 중 하나로, 자체적인 정렬 메소드를 제공한다는 점입니다.흔히 정렬 하면 정렬 알고리즘을 코드에 짜 넣는 경우가 일반적이지만, 루비에서는 정렬 메소드를 제공함으로써 배열의 정렬 알고리즘을 코딩하는 수고를 덜 수 있습니다.일단 다음 코드를 봅시다. 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, ..