goalng下的快速排序

一直觉得自己的数据结构学习的不是很好,抽空练习练习下基础算法。
先来张图了,解下算法

这里是golang的代码实现,欢迎拍砖,,

算法比较简单,就是在出栈的节点上想了半天,这点欢迎


包主要

import (

“fmt)

常量(

greaterthan=极微?/大于

=,,,,,,,//等于

低,,,,,//小于

)

//比较

func comparedata (int d1、d2 int) int {

如果d1 & lt;d2 {

返回小于

}其他如果d1==d2 {

=

}返回其他{

返回greaterthan

}

}

//交换

func交换(d1 * int, d2 * int) {

var临时int

temp=* d1

* d1=* d2

* d2=temp

返回}

//排序

函数快速排序(datalist [] int, int, int) {

var中间int

中产=(左+右)/2

如果中间=={

返回}

如果中间=={

返回}

fmt。Println(“正确”“左”,左,右)

我:=左;我& lt;=中间;我+ + {

j:=中间;j & lt;=正确;j + + {

如果comparedata (datalist[我],datalist [j])==greaterthan {

交换(和datalist[我],datalist [j])

}

}

}

如果左& lt;中间{

快速排序(datalist,左,中间)

}

如果中间& lt;对{

快速排序(datalist、中、右)

}

}

函数排序(datalist int []) {

快速排序(datalist 0 len (datalist) 1)

fmt.Println(“数据:“)

fmt.Println (datalist)

}

常量(

k=200

)

函数主要(){

var (

datalist int []

)

datalist=使(int [], k)

我:=0;我& lt;k;我+ + {

datalist[我]=100 -我

}

datalist [1]=101

datalist [2]=103

datalist [8]=200

datalist [6]=201

datalist [4]=204

datalist [5]=206

datalist [3]=207

datalist [9]=2009

datalist [7]=250

fmt.Println (datalist)

排序(datalist)

}

,


goalng下的快速排序