TIL | 이슈 정렬 방식의 종류(랭킹 알고리즘, 환형 이동 순열)

bubblegum·2024년 3월 21일
0

Today I learn(TIL)

목록 보기
34/84
post-thumbnail

랭킹 알고리즘

  1. Integer 방식
  • 각 항목의 순서를 연속된 정수로 저장하는 방법입니다.
  • 데이터가 많은 경우 시스템의 성능 저하를 일으킬 수 있으며, 동시에 여러 사용자가 수정을 시도하면 빈번하게 충돌이 발생하기도 합니다.
  1. GreenHopper 방식
  • 각 항목 사이에 충분한 간격을 두고 순위값을 할당해서 새 항목을 중간에 삽입하는 방식입니다.
  • 이미 순위값들이 밀집돼 있어 새로운 값을 부여할 여유가 없는 상황이라면, 시스템을 중단하고 순위값을 재조정(rebalancing)하는 작업이 필요하며, 이때 정수 방식과 동일한 한계에 부딪힙니다.
  1. Linked List 방식
  • 이 방식은 각 항목이 이전 항목과 다음 항목의 정보를 갖고 있는 방식입니다. 따라서 GreenHopper 방식에서 발생하는 순위값 고갈 현상은 발생하지 않습니다.
  • 하지만 이 방식에서는 순서를 변경할 때 연결된 항목들의 이전과 다음 항목 정보를 수정하기 위한 2~4번의 수정 비용이 발생합니다. 또한 목록을 조회할 때 전체를 스캔(full scan)해야 한다는 단점이 있습니다.
정렬 방식주요 한계점
Integer순서 변경 시 수정 범위가 큼(O(N))
GreenHopper빠른 Rank 고갈 및 재조정 시 시스템 중단
Linked List순서 변경 시 2~4번의 고정 비용 발생 및 목록 조회 시 전체 스캔

환형 이동 순열(Circular Shift Permutation)

환형 이동(Circular Shift)" 또는 "환형 이동 순열(Circular Shift Permutation)"은 순환하는 데이터나 순환 구조에서 원소들의 위치를 변경하는 작업을 가리킵니다. 만약 1, 2, 3, 4, 5번이 순서대로 있고 5번과 1번의 ordernumber를 서로 교환한다면, 즉 5번의 ordernumber를 1로, 1번의 ordernumber를 5로 변경한다면, 이는 일종의 순환하는 방식으로 순서를 변경하는 것입니다. 이것은 연속적인 순서를 유지하면서 1부터 N까지의 값을 가지는 정수를 순환시키는 것과 같습니다.

이렇게 순환하는 방식을 사용하면 원래의 순서를 유지하면서 원하는 위치로 데이터를 이동시킬 수 있습니다. 이는 특히 순환하는 데이터 집합에서 사용되며, 주로 원형 데이터 구조나 순환 목록에서 적용됩니다. 이 방식은 일반적으로 순환 큐나 환형 버퍼 등에서 사용됩니다.

profile
황세민

0개의 댓글

관련 채용 정보