最新消息:yaf表单扩展中新增加了浮点数、日期和集合的校验。php yaf框架扩展实践三——表单

golang实现数组array快速排序

Golang 469浏览 0评论

用golang写的实现对数组的快速排序。

package main

import (
	"fmt"
	"math/rand"
	"time"
)

func swap(a int, b int) (int, int) {
	return b, a
}

func partition(aris []int, begin int, end int) int {
	pvalue := aris[begin]
	i := begin
	j := begin + 1
	for j < end {
		if aris[j] < pvalue {
			i++
			aris[i], aris[j] = swap(aris[i], aris[j])
		}
		j++
	}
	aris[i], aris[begin] = swap(aris[i], aris[begin])
	return i
}

func quickSort(aris []int, begin int, end int) {
	if begin+1 < end {
		mid := partition(aris, begin, end)
		quickSort(aris, begin, mid)
		quickSort(aris, mid+1, end)
	}
}

func randArray(aris []int) {
	l := len(aris)
	for i := 0; i < l; i++ {
		r := rand.New(rand.NewSource(time.Now().UnixNano()))
		aris[i] = r.Intn(1000)
	}
}

func main() {
	intas := make([]int, 10)
	randArray(intas)
	fmt.Println(intas)

	quickSort(intas, 0, 10)
	fmt.Println(intas)
}

运行结果:

[790 925 123 389 594 344 710 655 446 649]
[123 344 389 446 594 649 655 710 790 925]

因为数组内的元素是随机生成出来的,所以运行的结果绝大多数情况都不会一致。

转载请注明:快乐编程 » golang实现数组array快速排序

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址