挺好玩的,记录一下,只更改一个符号便能完成正序或者倒序排序
package main
import "fmt"
func show(arr []int){
for i:=0;i<len(arr);i++{
fmt.Println(arr[i])
}
fmt.Println("----------------------------------------------")
}
func main(){
k := []int{1,3,2,4,9,2,6,5,4,8}
show(k)
quicksort(k)
show(k)
}
func quicksort(arr []int){
if len(arr) >1{
start:=0
end:=len(arr)
//index从第一个开始,记录下标。
index:=start
//从第二个元素开始,循环到末尾
for j:=start+1;j<end;j++ {
//一旦发现比arr[start]小的或者大于的
更改大于号小于号便可以实现倒序和正序排序
if arr[j] < arr[start]{
//让发现的小于或者大于start的数,依次放置在第2个,第3个....位置上。
index++;
temp :=arr[index]
arr[index] = arr[j]
arr[j] = temp
}
}
//交换start和 index 。 到此为止, index之前为小于start元素的,index之后为大于start元素的。
tmp := arr[index]
arr[index] = arr[start]
arr[start] = tmp
//递归下去
if index >0 {
quicksort(arr[start:index])
}
if index+1 < end{
quicksort(arr[index+1:end])
}
}
}