/

常见排序算法

快速排序 (Quick Sort)

func quickSort(arr []int) {
	if len(arr) <= 1 {
		return
	}
	pivot := arr[0]
	left, right := 0, len(arr)-1
	i := 1
	for i <= right {
		if arr[i] > pivot {
			arr[i], arr[right] = arr[right], arr[i]
			right--
		} else if arr[i] < pivot {
			arr[i], arr[left] = arr[left], arr[i]
			left++
		} else {
			right--
			left++
		}
	}

	quickSort(arr[:right])
	quickSort(arr[right+1:])
}

归并排序 (Merge Sort)

func mergeSort(arr []int) []int {
	if len(arr) <= 1 {
		return arr
	}
	left := mergeSort(arr[:len(arr)/2])
	right := mergeSort(arr[len(arr)/2:])
	return merge(left, right)
}

func merge(left, right []int) (result []int) {
	result = make([]int, 0, len(left)+len(right))
	l, r := 0, 0
	lenLeft, lenRight := len(left), len(right)
	for l < lenLeft && r < lenRight {
		if left[l] <= right[r] {
			result = append(result, left[l])
			l++
		} else {
			result = append(result, right[r])
			r++
		}
	}
	result = append(result, left[l:]...)
	result = append(result, right[r:]...)
	return
}

施工中…