Golang 정렬 슬라이스 예

Golang Jeonglyeol Seullaiseu Ye



정렬은 요소를 특정 순서로 배치하는 것을 포함하는 기본 프로그래밍 작업입니다. Go의 공식 라이브러리에서 사용할 수 있는 정렬 패키지에는 슬라이스를 빠르게 정렬하는 여러 기능이 포함되어 있습니다. 슬라이스 정렬은 프레젠테이션을 위한 데이터 구성에서 검색 알고리즘 최적화에 이르기까지 많은 애플리케이션에서 공통적인 작업입니다. 이 기사에서는 다양한 정렬 기술을 살펴보고 정렬 패키지를 사용하여 Go에서 사용법을 보여줍니다.

예제 1: 오름차순의 Golang 정렬 슬라이스

'sort.Slice()' 함수는 슬라이스의 요소를 오름차순 또는 내림차순으로 재정렬하는 Go의 가장 중요한 함수입니다. 슬라이스가 오름차순으로 정렬된 다음 그림을 고려하십시오.

패키지 기본
수입 (
'fmt'
'종류'
)
기능 기본 () {
evenSlice := [] 정수 { 10 , 2 , 8 , 4 , 0 , 6 }
fmt . Println ( '정렬되지 않은 슬라이스:' , evenSlice )
종류 . 일부분 ( evenSlice , 기능 ( , 제이 정수 ) 부울 {
반품 evenSlice [ ] < 이븐슬라이스 [ 제이 ]
})
fmt . Println ( '정렬된 슬라이스:' , evenSlice )
}

main() 함수의 시작 부분에서 {10, 2, 8, 4, 0, 6} 값으로 evenSlice 슬라이스를 정의합니다. 이 조각은 처음에 정렬되지 않은 짝수의 모음을 나타냅니다. evenSlice 슬라이스를 정렬하기 위해 sort.Slice() 함수가 슬라이스와 함께 사용됩니다. sort.Slice() 함수 내부에는 정렬 함수가 인수로 제공됩니다. 이 함수는 'i' 및 'j' 인덱스에서 슬라이스의 두 요소를 비교하여 정렬 순서를 결정합니다. evenSlice[i]가 evenSlice[j]보다 작으면 true를 반환합니다. 그렇지 않으면 false를 반환합니다. sort.Slice() 함수는 이 비교 함수를 사용하여 'evenSlice' 슬라이스의 요소를 오름차순으로 재정렬합니다.







오름차순으로 정렬된 조각의 결과는 다음 출력 화면에 생성됩니다.





예 2: Golang Sort Part Slice

다음으로 Go의 sort.Slice() 함수를 사용하여 오름차순으로 지정된 슬라이스의 하위 슬라이스에 정렬이 적용됩니다.





패키지 기본
수입 (
'fmt'
'종류'
)
기능 기본 () {
N := [] 정수 { 9 , 7 , , 5 }
시작 := 0
:=
종류 . 일부분 ( N [ 시작 : ], 기능 ( , 제이 정수 ) 부울 {
반품 N [ 시작 + ] [ 시작 + 제이 ]
})
fmt . Println ( N )
}

처음에는 [9, 7, 3, 5] 값으로 'n' 슬라이스를 만듭니다. 또한 'start'와 'end'라는 두 변수는 각각 0과 3으로 설정됩니다. 이러한 변수는 정렬될 'n' 슬라이스의 인덱스 범위를 정의합니다. 'sort.Slice()' 함수는 하위 슬라이스 'n[start:end]'를 첫 번째 인수로 사용하여 호출됩니다. 이 하위 슬라이스는 지정된 범위 내에서 'n'의 요소를 포함합니다. 그런 다음 sort.Slice() 함수 내부의 두 번째 인수로 정렬 함수가 제공됩니다.

여기서 이 함수는 하위 슬라이스 내의 요소를 나타내는 'i' 및 'j'라는 두 개의 인덱스를 받습니다. 하위 슬라이스 내의 요소를 비교하기 위해 정렬 함수는 시작을 사용하여 원래 슬라이스의 해당 요소에 액세스합니다. n[start+i]와 n[start+j]를 비교한 다음, sort.Slice() 함수는 제공된 정렬 함수를 사용하여 하위 슬라이스 내의 요소를 오름차순으로 재정렬합니다.



다음 출력은 지정된 범위(시작에서 끝-1까지) 내의 요소가 정렬되고 범위 밖의 요소는 변경되지 않은 상태로 유지됨을 표시합니다.

예제 3: Sort.Ints() 함수를 사용하는 Golang 정렬 정수 슬라이스

또한 정수 조각을 정렬하는 가장 편리한 방법은 사용자 정의 정렬 방법을 구현할 필요 없이 sort.Ints() 함수입니다. 정수 조각에 직접 작용하고 내부 정렬을 수행합니다. 다음 프로그램은 지정된 정수를 정렬합니다.

패키지 기본
수입 (
'fmt'
'종류'
)
기능 기본 () {
IntSlice := [] 정수 { 10 , 13 , 열 다섯 , 열하나 , 14 , 12 }
fmt . Println ( '정렬되지 않은 슬라이스:' , IntSlice )
종류 . 정수 ( IntSlice )
fmt . Println ( '정렬된 슬라이스:' , IntSlice )
}

먼저 초기에 정렬되지 않은 정수 컬렉션을 나타내는 [10, 13, 15, 11, 14, 12] 값으로 'IntSlice' 슬라이스를 선언하고 초기화합니다. 그런 다음 'IntSlice' 슬라이스를 인수로 사용하여 sort.Ints() 함수를 호출하여 'IntSlice'를 정렬합니다. 이 경우 sort.Ints() 함수는 최적화된 정렬 알고리즘에 따라 슬라이스의 모든 부분을 내부적으로 정렬합니다. 원본 조각을 직접 수정하여 해당 요소를 정렬된 순서로 재정렬합니다.

다음 출력은 먼저 정렬되지 않은 조각이 먼저 표시되고 그 다음에 정렬된 조각이 표시됨을 보여줍니다.

예제 4: Golang 정렬 문자열 조각

Go는 특정 순서로 문자열 조각을 정렬하는 데 사용되는 sort 패키지의 sort.Strings() 함수도 제공합니다. 여기에서 다음 프로그램은 문자열 조각을 정렬하는 데 도움이 됩니다.

패키지 기본
수입 (
'fmt'
'종류'
)
기능 기본 () {
strSl := [] { '골란' , '파이썬' , '자바' , '펄' , '타입스크립트' }
종류 . 문자열 ( strSl )
fmt . Println ( strSl )
}

먼저 정렬되지 않은 ['golang', 'python', 'java', 'perl', 'typescript'] 값으로 'strSl' 슬라이스를 설정했습니다. 그런 다음 슬라이스의 요소를 사전식 순서로 정렬하는 sort.Strings() 함수를 사용하여 'strSl' 슬라이스를 정렬합니다. 이 함수는 원본 슬라이스를 직접 수정하여 해당 요소를 ASCII 값을 기준으로 정렬된 순서로 재정렬합니다.

출력은 다음과 같이 문자열 조각을 오름차순으로 정렬합니다.

예제 5: IntAreSort() 함수를 사용하는 Golang 검사 정렬 슬라이스

그러나 Go의 sort.IntsAreSorted() 함수를 사용하면 주어진 정수 조각이 오름차순으로 정렬되어 있는지 여부를 확인할 수 있습니다. 주어진 슬라이스에 대한 IntAreSort() 함수의 다음 예제 프로그램을 고려하십시오.

패키지 기본
수입 (
'fmt'
'종류'
)
기능 기본 () {
sl := [] 정수 { - 33 , 105 , - 42 , 59 , 18 , 0 , - }
fmt . Println ( '슬라이스:' )
fmt . Println ( '정렬되지 않은 슬라이스: ' , sl )
결과 := 종류 . 정수가 정렬됨 ( sl )
fmt . Println ( ' \N 결과:' )
fmt . Println ( 'Slice가 정렬되어 있습니까?:' , 결과 )
}

먼저 정렬되지 않은 무작위 정수 조각을 'sl'로 정의합니다. 이 조각에는 특별한 순서가 없는 정수 모음이 포함되어 있습니다. 다음으로 sort.IntsAreSorted() 함수를 호출하고 'sl' 슬라이스를 인수로 전달합니다. 이 함수는 슬라이스 입력이 오름차순으로 정렬되었는지 여부를 나타내는 부울 결과를 제공합니다. 그런 다음 fmt.Println() 함수는 반환된 부울 값을 기반으로 주어진 슬라이스가 정렬되었는지 여부를 출력하는 결과를 인쇄합니다.

정렬되지 않은 정수 조각의 정렬 순서에 대해 출력에 false가 표시됩니다.

예제 6: Golang 역 정렬 슬라이스

또한 Go의 정렬 패키지에 있는 sortReverse() 및 sortStringSlice() 함수를 사용하여 문자열 조각을 역정렬할 수 있습니다. 다음 프로그램은 sort.Reverse() 함수의 작동을 보여줍니다.

패키지 기본
수입 (
'fmt'
'종류'
)
기능 기본 () {
모음 슬라이스 := [] { '그것은' , 'ㅏ' , '나' , '안에' , '영형' }
fmt . Println ( '정렬하기 전에:' , 모음 슬라이스 )
종류 . 종류 ( 종류 . 뒤집다 ( 종류 . 스트링슬라이스 ( 모음 슬라이스 )))
fmt . Println ( '정렬 후:' , 모음 슬라이스 )
}

모음 'e', 'a', 'i', 'u' 및 'o'를 포함하는 'vowelSlice' 문자열의 조각을 정의하는 것으로 시작합니다. 지정된 문자열 조각의 초기 내용은 'print' 기능을 사용하여 먼저 인쇄됩니다. 다음으로 sort.Reverse() 및 sort.StringSlice() 함수를 인수로 하는 sort.Sort() 함수를 사용하여 정렬 작업을 수행합니다. 여기서 'sort.Reverse()'는 요소의 순서를 반대로 하는 새로운 유형을 만듭니다. 모음 슬라이스를 정렬 가능한 유형으로 변환하는 인수로 'sort.StringSlice' 유형을 사용합니다.

여기의 출력은 알파벳 역순으로 모음을 표시합니다.

결론

제공된 슬라이스를 정렬하는 예제와 함께 다양한 정렬 기능을 탐구했습니다. 또한 하위 슬라이스의 정렬과 슬라이스가 이미 정렬되었는지 확인하는 방법도 다루었습니다. 따라서 정렬 패키지의 기능을 활용하여 Go 프로젝트에서 다양한 정렬 문제를 해결할 수 있습니다.