golang 实现 快排 和 冒泡

简介: golang 实现 快排 和 冒泡

go 实现 快排

package sortfunc
// QSort : quickly sort int[] dat
func qSort(vals []int, left, right int) (err error) {
  temp := vals[left]
  p := left
  i, j := left, right
  for i <= j {
    for j >= p && vals[j] >= temp {
      j--
    }
    if j >= p {
      vals[p] = vals[j]
      p = j
    }
    for i <= p && vals[i] <= temp {
      i++
    }
    if i <= p {
      vals[p] = vals[i]
      p = i
    }
  }
  vals[p] = temp
  if p-left > 1 {
    qSort(vals, left, p-1)
  }
  if right-p > 1 {
    qSort(vals, p+1, right)
  }
  return nil
}
// QSort : quick sort
func QSort(vals []int) (err error) {
  qSort(vals, 0, len(vals)-1)
  return
}

go 实现冒泡

package sortfunc
// BubbleSort : sort vals using bubble
func BubbleSort(vals []int) (err error) {
  // no   optimiz
  vLen := len(vals)
  for i := 0; i < vLen-1; i++ {
    for j := 0; j < vLen-i-1; j++ {
      if vals[j] > vals[j+1] {
        vals[j], vals[j+1] = vals[j+1], vals[j]
      }
    }
  }
  return
}
相关文章
|
5月前
|
算法 Go
【golang】golang实现冒泡排序
【golang】golang实现冒泡排序
27 1
|
6月前
|
搜索推荐 JavaScript
NodeJS实现插入排序算法
NodeJS实现插入排序算法
34 1
|
6月前
|
搜索推荐 JavaScript
NodeJS实现快速排序算法
NodeJS实现快速排序算法
40 0
|
6月前
|
搜索推荐 Go
golang数据结构篇之分治法
golang数据结构篇之分治法
41 5
|
6月前
|
Go
golang力扣leetcode 143.重排链表
golang力扣leetcode 143.重排链表
44 0
|
6月前
|
Go
golang力扣leetcode 704.二分查找
golang力扣leetcode 704.二分查找
29 0
|
存储 算法 Go
Go 实现线性查找算法和二分查找算法
本文对线性查找算法和二分查找算法进行了介绍。线性查找算法虽简单,但是查找效率低,时间复杂度为 O(N);而二分查找法效率虽较高,但是所查找的数组必须是有序的,时间复杂度为 O(logn),基于区间特点的不同(左闭右闭、左闭右开),二分查找算法的写法也不同。
175 1
Go 实现线性查找算法和二分查找算法
|
Go 数据安全/隐私保护
Golang 027. 佩尔数列Pell(n)
Golang 027. 佩尔数列Pell(n)
108 0