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

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

直接上代码

  1. packagesort
  2.  
  3. //直接插入排序
  4. funcDirectInsertSort(array[]int)[]int{
  5. len:=len(array)
  6. vartmp,jint
  7. fori:=1;i<len;i++{
  8. ifarray[i]<array[i-1]{
  9. tmp=array[i]
  10. forj=i-1;tmp<array[j];j--{
  11. array[j+1]=array[j]
  12. }
  13. array[j+1]=tmp
  14. }
  15. }
  16. returnarray
  17. }
  18.  
  19. //折半插入排序
  20. funcBinaryInsertSort(array[]int)[]int{
  21. vartmp,low,high,midint
  22. len:=len(array)
  23. fori:=1;i<len;i++{
  24. tmp=array[i]
  25. low,high=0,i-1
  26. forlow<=high{
  27. mid=(low+high)/2
  28. ifarray[mid]>array[i]{
  29. high=mid-1
  30. }else{
  31. low=mid+1
  32. }
  33. }
  34. forj:=i-1;j>=high+1;j--{
  35. array[j+1]=array[j]
  36. }
  37. array[high+1]=tmp
  38. }
  39. returnarray
  40. }
  41.  
  42. //冒泡排序
  43. funcBubbleSort(array[]int)[]int{
  44. len:=len(array)
  45. fori:=0;i<len-1;i++{
  46. forj:=len-1;j>i;j--{
  47. ifarray[j-1]>array[j]{
  48. array[j-1],array[j]=array[j],array[j-1]
  49. }
  50. }
  51. }
  52. returnarray
  53. }
  54.  
  55. //简单选择排序
  56. funcSelectSort(array[]int)[]int{
  57. len:=len(array)
  58. fori:=0;i<len-1;i++{
  59. forj:=len+1;j<len;j++{
  60. ifarray[j-1]>array[j]{
  61. array[j-1],array[j-1]
  62. }
  63. }
  64. }
  65. returnarray
  66. }
  67.  
  68. //快速排序
  69. funcQuickSort(array[]int)[]int{
  70. quickSort(array,len(array)-1)
  71. returnarray
  72. }
  73.  
  74. funcquickSort(array[]int,left,rightint){
  75. ifleft<right{
  76. pivotPosition:=partition(array,right)
  77. quickSort(array,pivotPosition-1)
  78. quickSort(array,pivotPosition+1,right)
  79. }
  80. }
  81.  
  82. funcpartition(array[]int,rightint)int{
  83. pivot:=array[left]
  84. forleft<right{
  85. forleft<right&&array[right]>pivot{
  86. right--
  87. }
  88. array[left]=array[right]
  89. forleft<right&&array[left]<=pivot{
  90. left++
  91. }
  92. array[right]=array[left]
  93. }
  94.  
  95. array[left]=pivot
  96. returnleft
  97. }

猜你在找的Go相关文章