수색…


홀수 - 짝수 기본 정보 정렬

홀수 - 짝 정렬 또는 벽돌 정렬은 로컬 상호 연결이있는 병렬 프로세서에서 사용하기 위해 개발 된 간단한 정렬 알고리즘입니다. 리스트의 인접한 요소의 모든 홀수 / 짝수 색인 쌍을 비교하여 작동하며, 쌍이 잘못된 순서로 있으면 요소가 전환됩니다. 다음 단계는 짝수 / 홀수 색인 쌍에 대해이 작업을 반복합니다. 그런 다음 목록이 정렬 될 때까지 홀수 / 짝수 단계와 짝수 / 홀수 단계 사이에서 번갈아 나타납니다.

홀수 - 짝수 정렬을위한 의사 코드 :

if n>2 then
    1. apply odd-even merge(n/2) recursively to the even subsequence a0, a2, ..., an-2 and to the odd subsequence a1, a3, , ..., an-1
    2. comparison [i : i+1] for all i element {1, 3, 5, 7, ..., n-3}
else
    comparison [0 : 1]

Wikipedia에는 ​​홀수 - 짝수 정렬에 대한 최상의 그림이 있습니다.

이상한 애니메이션

홀수 짝수 정렬의 예 :

홀수 - 짝수 정렬의 예

이행:

Odd-Even Sort Algorithm을 구현하기 위해 C # 언어를 사용했습니다.

public class OddEvenSort
{
    private static void SortOddEven(int[] input, int n)
    {
        var sort = false;

        while (!sort)
        {
            sort = true;
            for (var i = 1; i < n - 1; i += 2)
            {
                if (input[i] <= input[i + 1]) continue;
                var temp = input[i];
                input[i] = input[i + 1];
                input[i + 1] = temp;
                sort = false;
            }
            for (var i = 0; i < n - 1; i += 2)
            {
                if (input[i] <= input[i + 1]) continue;
                var temp = input[i];
                input[i] = input[i + 1];
                input[i + 1] = temp;
                sort = false;
            }
        }
    }

    public static int[] Main(int[] input)
    {
        SortOddEven(input, input.Length);
        return input;
    }
}

보조 공간 : O(n)
시간 복잡성 : O(n)



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow