>  기사  >  백엔드 개발  >  C# 힐 정렬

C# 힐 정렬

黄舟
黄舟원래의
2017-02-09 16:10:301959검색

C# 힐 정렬

using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Text;  
namespace Sort  
{  
    class ShellSorter  
    {  
        public static int[] Sort(int[] a)  
        {  
            ShellSort(a);  
            return  a;  
        }  
        public static void ShellSort(int[] myArray)  
        {  
            int i, j, increment;  
            int temp;  
            for (increment = myArray.Length / 2; increment > 0; increment /= 2)  
            {  
                for (i = increment; i < myArray.Length; i++)  
                {  
                    temp = myArray[i];  
                    for (j = i; j >= increment; j -= increment)  
                    {  
                        if (temp < myArray[j - increment])  
                            myArray[j] = myArray[j - increment];  
                        else  
                            break;  
                    }  
                    myArray[j] = temp;  
                }  
            }  
        }  
    }  
}

힐 정렬은 정렬된 전체 시퀀스를 여러 개의 하위 시퀀스로 나누고 하위 시퀀스에 대해 직접 삽입 정렬을 수행하는 것입니다. 그런 다음 기본적으로 순서대로 모든 배열에 대해 직접 삽입 정렬을 수행합니다. 이는 새로운 순서의 시퀀스를 형성하는 데 사용됩니다. 일반적인 분할 방법은 두 요소 사이의 거리가 d=n/2, n/4, n/8...등이 되는 것입니다.
1. 기본 아이디어:
정렬할 전체 데이터 요소를 여러 그룹으로 나누고, 동일한 그룹의 데이터 요소를 직접 삽입하는 방법을 사용하여 그룹 수를 점차적으로 줄입니다. 데이터 요소가 완료되었습니다. 그룹 내에서 정렬한 후 정렬 프로세스가 종료됩니다.
2. 스킬 :
그룹의 구성은 단순히 "세그먼트별 분할"이 아닌, 일정 증분 dk로 분리된 레코드를 그룹으로 구성하고, 증분 dk를 단계적으로 단축한다. 예를 들어 dk=1이 될 때까지 차례로 5를 취합니다. 3,1).
3. 장점:
키워드 값이 작은 요소를 빠르게 앞으로 이동할 수 있고 순서가 기본적으로 순서대로 되어 있으면 직접 삽입 정렬을 사용할 수 있으며 시간 효율성이 훨씬 높아집니다. .

예시 1:

C# 힐 정렬

C# 힐 정렬

예시 2:

C# 힐 정렬

흐름도

C# 힐 정렬

삽입 정렬 알고리즘의 경우 원본 데이터가 순서대로 되어 있으면 데이터를 이동할 필요가 없으며 삽입의 효율성이 높아집니다. 정렬 알고리즘 주로 데이터 이동에 사용됩니다. 따라서 데이터 자체를 정렬하거나 기본적으로 정렬하면 효율성이 좋아진다고 볼 수 있다.

위 내용은 C#과 Hill 정렬 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:C# 구조 및 클래스다음 기사:C# 구조 및 클래스