1. 버블 정렬
FUNC 거품 정렬 (슬라이스 [] INT)] INT는 {
I는, J가 좋아, 카운트 = 0, 0, true로 렌 (조각)
. I = 0; I는 <count- 1; I ++ {// 가입 요구 횟수 비교 휠 -1
참 괜찮 =
J = 0; J <-count-I (1)]. J 각각 ++ {// 논리 비교
IF 슬라이스 [J]> 슬라이스 [J + 1이다.] {
슬라이스 [J], 슬라이스 [ . (1) + J = 슬라이스 [J의 +. 1] 슬라이스 [J]
거짓 괜찮 =
}
}
휠 교환 더 위치 비교를 발생하지 않는 경우, 설명은 완전한 정렬 된 // {좋아한다면, 루프 조기 종료
BREAK를
}
}
슬라이스를 반환
}
2. 삽입 정렬
InsertSort FUNC (슬라이스 [] INT) {INT의
VAR의 I, J의 INT의
COUNT = LEN (조각)
. I 대 = 1; I는 <COUNT; I ++ {
위해 J = I, J> 0; // {J, 비교함으로써, 삽입 위치를 찾는
슬라이스 [-J. 1]> 슬라이스 [J]를 {IF
슬라이스 [-J. 1] 슬라이스 [J] = 슬라이스 [J], 슬라이스 [-J. 1]
} 현재의 요소가 다른 {이다 // 루프 종료, 삽입 위치를 찾을 수
BREAK를
}
}
}
슬라이스를 반환
}
3. 정렬
FUNC SelectSort (슬라이스 [] INT)] INT {
VAR I, J, minKey는 INT
카운트 = LEN (조각)
의 I = 0; 난 카운트 <1; 난 ++ {
minKey = I
, J에 대한 = I + 1; j는 <카운트; J ++ {//找最小数位置
경우 슬라이스 [minKey]> 슬라이스 [J] {
minKey = J
}
}
경우 minKey! = I {
슬라이스 [minKey, 슬라이스 [I] = 슬라이스 [i]를, 슬라이스 [minKey]
}
}
반환 슬라이스
}
4. 빠른 정렬
func QuickSort(slice []int, start, end int) {
if start >= end {
return
}
i, j := start, end
val := slice[(i+j)/2]
for i <= j {
for i <= end && slice[i] < val {
i++
}
for j >= start && slice[j] > val {
j--
}
if i <= j {
slice[i], slice[j] = slice[j], slice[i]
i++
j--
}
}
if start < j {
QuickSort(slice, start, j)
}
if end > i {
QuickSort(slice, i, end)
}
}
5. 二分查找
func BinarySearch(slice []int, head, tail, value int) int {
if head > tail {
return -1
}
middle := (head + tail) / 2
if slice[middle] == value {
return middle
} else if slice[middle] < value {
return BinarySearch(slice, middle+1, tail, value)
} else {
return BinarySearch(slice, head, middle-1, value)
}
}