ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

golang 快速排序

2020-03-03 21:57:29  阅读:257  来源: 互联网

标签:high arr int golang low var pivot 排序 快速


golang 快速排序

package main

import (
    "fmt"
    "strconv"
)

func quickSort(arr []int, low, high int) {
    if low < high {
        var pivot = partition(arr, low, high)
        quickSort(arr, low, pivot)
        quickSort(arr, pivot + 1, high)
    }
}
func partition(arr []int,low,high int) int  {
    var pivot = arr[low]
    var i = low
    var j= high
    // 6 5 4 3 2 1
    // 6 1 2 3 4 7
    for i< j{
        for arr[j] >= pivot && j > low {
            j--
        }
        //
        for arr[i]<= pivot && i<high{
            i++
        }
        if i<j {
            arr[i],arr[j]=arr[j],arr[i]
        }
    }
    arr[low],arr[j] = arr[j],pivot
    //
    return j
}

func printArray(arr []int) {
    for i := 0; i < len(arr); i++ {
        fmt.Print(strconv.Itoa(arr[i]) + " ")
    }
    fmt.Println("")
}

func main() {
    var arr = []int { 15, 3, 12, 6, -9, 9, 0,8,8 }
    fmt.Print("Before Sorting: ")
    printArray(arr)
    quickSort(arr, 0, len(arr) - 1)
    fmt.Print("After Sorting: ")
    printArray(arr)
}

参考文件:

最常用的排序-快速排序

Quick Sort Algorithm in Go Programming

标签:high,arr,int,golang,low,var,pivot,排序,快速
来源: https://blog.51cto.com/9406836/2475185

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有