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
}
相关文章
|
存储 缓存 算法
数据结构-链表(一)
链表(Linked List)是一种常见的数据结构,用于存储和组织数据。与数组不同,链表的元素(节点)在内存中不必连续存储,而是通过指针链接在一起。 链表由多个节点组成,每个节点包含两部分:数据(存储实际的元素值)和指针(指向下一个节点的引用)。链表的第一个节点称为头节点,最后一个节点称为尾节点,尾节点的指针通常指向空值(null)。
385 1
|
存储 缓存 NoSQL
MongoDB内部的存储原理
这篇文章详细介绍了MongoDB的内部存储原理,包括存储引擎WiredTiger的架构、btree与b+tree的比较、cache机制、page结构、写操作流程、checkpoint和WAL日志,以及分布式存储的架构。
970 1
MongoDB内部的存储原理
|
11月前
|
缓存 NoSQL 架构师
Redis批量查询的四种技巧,应对高并发场景的利器!
在高并发场景下,巧妙地利用缓存批量查询技巧能够显著提高系统性能。 在笔者看来,熟练掌握细粒度的缓存使用是每位架构师必备的技能。因此,在本文中,我们将深入探讨 Redis 中批量查询的一些技巧,希望能够给你带来一些启发。
Redis批量查询的四种技巧,应对高并发场景的利器!
|
存储 安全 Linux
Golang的GMP调度模型与源码解析
【11月更文挑战第11天】GMP 调度模型是 Go 语言运行时系统的核心部分,用于高效管理和调度大量协程(goroutine)。它通过少量的操作系统线程(M)和逻辑处理器(P)来调度大量的轻量级协程(G),从而实现高性能的并发处理。GMP 模型通过本地队列和全局队列来减少锁竞争,提高调度效率。在 Go 源码中,`runtime.h` 文件定义了关键数据结构,`schedule()` 和 `findrunnable()` 函数实现了核心调度逻辑。通过深入研究 GMP 模型,可以更好地理解 Go 语言的并发机制。
474 1
|
存储 安全 测试技术
GoLang协程Goroutiney原理与GMP模型详解
本文详细介绍了Go语言中的Goroutine及其背后的GMP模型。Goroutine是Go语言中的一种轻量级线程,由Go运行时管理,支持高效的并发编程。文章讲解了Goroutine的创建、调度、上下文切换和栈管理等核心机制,并通过示例代码展示了如何使用Goroutine。GMP模型(Goroutine、Processor、Machine)是Go运行时调度Goroutine的基础,通过合理的调度策略,实现了高并发和高性能的程序执行。
774 29
|
存储 NoSQL Shell
MongoDB复制(副本集)总结
这篇文章是关于MongoDB副本集的总结,包括复制原理、设置副本集、案例分析等内容。
329 1
|
网络协议 Linux 网络安全
SYN Cookie技术原理
【8月更文挑战第21天】
646 1
|
负载均衡 API 数据格式
RPC和HTTP的区别?
RPC和HTTP的区别?
1025 0
|
存储 关系型数据库 MySQL
MySQL Doublewrite Buffer(双写缓冲区)深入解析:原理及作用
MySQL Doublewrite Buffer(双写缓冲区)深入解析:原理及作用
|
监控 NoSQL 算法
【MongoDB】 MongoDB的副本集是什么?
【4月更文挑战第1天】【MongoDB】 MongoDB的副本集是什么?

热门文章

最新文章