golang實現快速排序

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

快速排序的原理就不介紹了。在網上看到一個有趣的視頻,大家可以看看,非常詳細且有趣。
快速排序視頻
代碼:https://play.golang.org/p/Fw5gtzrPj0

package mainimport (    "fmt")func main() {    var sortArray = []int{3, 41, 24, 76, 11, 45, 3, 3, 64, 21, 69, 19, 36}    fmt.Println(sortArray)    qsort(sortArray, 0, len(sortArray)-1)    fmt.Println(sortArray)}func qsort(array []int, low, high int) {    if low < high {        m := partition(array, low, high)        // fmt.Println(m)        qsort(array, low, m-1)        qsort(array, m+1, high)    }}func partition(array []int, low, high int) int {    key := array[low]    tmpLow := low    tmpHigh := high    for {        //尋找小於等於key的元素,該元素的位置一定是tmpLow到high之間,因為array[tmpLow]及左邊元素小於等於key,不會越界        for array[tmpHigh] > key {            tmpHigh--        }        //找到大於key的元素,該元素的位置一定是low到tmpHigh+1之間。因為array[tmpHigh+1]必定大於key        for array[tmpLow] <= key && tmpLow < tmpHigh {            tmpLow++        }        if tmpLow >= tmpHigh {            break        }        // swap(array[tmpLow], array[tmpHigh])        array[tmpLow], array[tmpHigh] = array[tmpHigh], array[tmpLow]        fmt.Println(array)    }    array[tmpLow], array[low] = array[low], array[tmpLow]    return tmpLow}
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.