golang 数据结构实现之内部排序(一)

前端之家收集整理的这篇文章主要介绍了golang 数据结构实现之内部排序(一)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

直接上代码

packagesort

//直接插入排序
funcDirectInsertSort(array[]int)[]int{
len:=len(array)
vartmp,jint
fori:=1;i<len;i++{
ifarray[i]<array[i-1]{
tmp=array[i]
forj=i-1;tmp<array[j];j--{
array[j+1]=array[j]
}
array[j+1]=tmp
}
}
returnarray
}

//折半插入排序
funcBinaryInsertSort(array[]int)[]int{
vartmp,low,high,midint
len:=len(array)
fori:=1;i<len;i++{
tmp=array[i]
low,high=0,i-1
forlow<=high{
mid=(low+high)/2
ifarray[mid]>array[i]{
high=mid-1
}else{
low=mid+1
}
}
forj:=i-1;j>=high+1;j--{
array[j+1]=array[j]
}
array[high+1]=tmp
}
returnarray
}

//冒泡排序
funcBubbleSort(array[]int)[]int{
len:=len(array)
fori:=0;i<len-1;i++{
forj:=len-1;j>i;j--{
ifarray[j-1]>array[j]{
array[j-1],array[j]=array[j],array[j-1]
}
}
}
returnarray
}

//简单选择排序
funcSelectSort(array[]int)[]int{
len:=len(array)
fori:=0;i<len-1;i++{
forj:=len+1;j<len;j++{
ifarray[j-1]>array[j]{
array[j-1],array[j-1]
}
}
}
returnarray
}

//快速排序
funcQuickSort(array[]int)[]int{
quickSort(array,len(array)-1)
returnarray
}

funcquickSort(array[]int,left,rightint){
ifleft<right{
pivotPosition:=partition(array,right)
quickSort(array,pivotPosition-1)
quickSort(array,pivotPosition+1,right)
}
}

funcpartition(array[]int,rightint)int{
pivot:=array[left]
forleft<right{
forleft<right&&array[right]>pivot{
right--
}
array[left]=array[right]
forleft<right&&array[left]<=pivot{
left++
}
array[right]=array[left]
}

array[left]=pivot
returnleft
}

猜你在找的Go相关文章