힐 정렬 법 No. 18

1. 힐 정렬 법 기본 사상
  • 힐 정렬 은 기록 을 아래 표 시 된 일정한 증 량 에 따라 그룹 을 나 누고 각 그룹 에 정렬 알고리즘 을 직접 삽입 하여 정렬 하 는 것 이다.증분 이 점점 줄 어 들 면서 각 그룹 에 포 함 된 키워드 가 점점 많아 지고 증분 이 1 로 줄 어 들 면 전체 파일 이 한 그룹 으로 나 뉘 어 알고리즘 이 종 료 됩 니 다.
  • 증 가 량 은 보통 초기의 원소 총 개수 에서 2 로 나 눈 다음 에 순서대로 아래로 밀어 낸다.기: 증 량 (초기 에는 원소 총 개수) = 증 량 / 2
  • 각 조 를 두 개의 요소 로 나 누 어 각각 삽입 정렬 을 하고 증 량 이 1 일 때 까지 전체 요 소 를 삽입 정렬 합 니 다.


  • 코드 구현 
    package main
     
    import "fmt"
    //    
    func shellSort(theArray []int) []int {
    	d_value := len(theArray) / 2
    	for d_value > 0 {
    		for i := 0; i < len(theArray); i++{
    			j := i
    			for ((j-d_value >= 0) && (theArray[j] < theArray[j - d_value])) {
    				theArray[j], theArray[j - d_value] = theArray[j - d_value], theArray[j]
    				j -= d_value;
    			}
    		}
    		d_value /= 2
    		fmt.Println(theArray)
    	}
    	return theArray
    }
     
    func main() {
    	var theArray = []int{1,0,2,10,9,70,5,6,3}
    	fmt.Print("   ")
    	fmt.Println(theArray)
    	fmt.Print("   ")
    	fmt.Println(shellSort(theArray))
    }

    좋은 웹페이지 즐겨찾기