一直觉得自己的数据结构学习的不是很好,抽空练习练习下基础算法。
先来张图了,解下算法
这里是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)
}
,