91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

golang快速排序的方法是什么

小億
74
2023-10-31 15:52:51
欄目: 編程語言

Golang中實現快速排序的方法如下:

package main

import "fmt"

func main() {
    arr := []int{5, 9, 3, 1, 7, 6}

    quickSort(arr, 0, len(arr)-1)

    fmt.Println(arr)
}

func quickSort(arr []int, low, high int) {
    if low < high {
        pivot := partition(arr, low, high)

        quickSort(arr, low, pivot-1)
        quickSort(arr, pivot+1, high)
    }
}

func partition(arr []int, low, high int) int {
    pivot := arr[high]
    i := low - 1

    for j := low; j < high; j++ {
        if arr[j] < pivot {
            i++
            arr[i], arr[j] = arr[j], arr[i]
        }
    }

    arr[i+1], arr[high] = arr[high], arr[i+1]

    return i + 1
}

以上是一個簡單的快速排序的實現。首先,定義了一個quickSort函數,它使用遞歸的方式對數組進行排序。在quickSort函數中,首先通過partition函數找到一個基準值(這里選擇數組最后一個元素),然后將小于基準值的元素放到基準值的左邊,大于基準值的元素放到基準值的右邊。然后,遞歸調用quickSort函數對左右兩個子數組進行排序。最終,數組會被排序成升序。

partition函數會根據基準值將數組分成兩個部分。它使用兩個指針ij,指向數組的首尾。遍歷數組,如果當前元素小于基準值,就將它與i指針指向的元素交換,并將i指針向后移動。遍歷結束后,將基準值與i+1指針指向的元素交換,將基準值放到正確的位置上,并返回基準值的索引。

運行以上代碼,輸出結果為:[1 3 5 6 7 9],表示數組已經按照升序排列好了。

0
始兴县| 临沭县| 彭州市| 海宁市| 政和县| 伊金霍洛旗| 巨鹿县| 额敏县| 蒙山县| 阳谷县| 鹰潭市| 花莲县| 陆丰市| 井陉县| 邵阳县| 米脂县| 开原市| 兴安县| 开江县| 湟中县| 白城市| 聂荣县| 图木舒克市| 临泉县| 永泰县| 三门县| 绍兴县| 锡林浩特市| 莱州市| 阜南县| 马公市| 江达县| 天长市| 包头市| 仁怀市| 开封市| 江都市| 哈巴河县| 灵宝市| 黄骅市| 石渠县|