go实现归并排序算法

分手后的思念是犯贱 2022-05-09 00:28 264阅读 0赞

前面我们讲了归并排序算法,接下来我们来讲讲go的代码实现呗,如下

  1. package main
  2. import "fmt"
  3. //合并排序
  4. func lastMergeSort(list1 []int, list2 []int) []int{
  5. i, j := 0,0
  6. //temp := make([]int,0)
  7. var temp[]int
  8. for i < len(list1) && j < len(list2) {
  9. if (list1[i] <= list2[j]) {
  10. temp = append(temp, list1[i])
  11. i++
  12. }else {
  13. temp = append(temp, list2[j])
  14. j++
  15. }
  16. }
  17. if (i == len(list1)) {
  18. for ; j <len(list2); j++ {
  19. temp = append(temp, list2[j])
  20. }
  21. }
  22. if (j == len(list2)) {
  23. for ; i <len(list1); i++ {
  24. temp = append(temp, list1[i])
  25. }
  26. }
  27. return temp;
  28. }
  29. func mergeSort(theArray []int )[]int {
  30. if(len(theArray)==1) {
  31. return theArray
  32. }
  33. mid := len(theArray)/2
  34. leftArray := mergeSort(theArray[:mid])
  35. rightArray := mergeSort(theArray[mid:])
  36. return lastMergeSort(leftArray, rightArray);
  37. }
  38. func main() {
  39. var theArray = []int{6, 4, 5, 1, 8, 7, 2, 3}
  40. fmt.Print("排序前")
  41. fmt.Println(theArray)
  42. fmt.Print("排序后")
  43. arrayResult := mergeSort(theArray)
  44. fmt.Println(arrayResult)
  45. }

执行结果如下

  1. 排序前[6 4 5 1 8 7 2 3]
  2. 排序后[1 2 3 4 5 6 7 8]

符合预期

发表评论

表情:
评论列表 (有 0 条评论,264人围观)

还没有评论,来说两句吧...

相关阅读

    相关 归并排序算法(Java实现

    1、基本思想 归并排序(Merge)是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列