具体过程:黑色标记代表左指针,红色标记代表右指针,蓝色标记代表中间值。(依次从左往向下)

//QuickSort 快速排序
func QuickSort(left int, right int, arr *[]int) {
l := left
r := right
pivot := arr[(left+right)/]
tmp :=
for l < r {
for arr[l] < pivot {
l++
}
for arr[r] > pivot {
r--
}
if l >= r {
break
}
tmp = arr[l]
arr[l] = arr[r]
arr[r] = tmp
if arr[l] == pivot {
r--
}
if arr[r] == pivot {
l++
}
}
if l == r {
l++
r--
}
if left < r {
QuickSort(left, r, arr)
}
if right > l {
QuickSort(l, right, arr)
}
}

golang数据结构之快速排序的更多相关文章

  1. golang数据结构之总结

    golang语言的一些数据结构实现,包括: 队列(单队列.循环队列) 链表(单链表.双链表.循环链表(解决约瑟夫环问题)) 栈(实现加减乘除计算) 递归之迷宫问题 哈希表(员工管理系统) 树(三种遍历 ...

  2. golang数据结构和算法之BinarySearch二分查找法

    基础语法差不多了, 就需要系统的撸一下数据结构和算法了. 没找到合适的书, 就参考github项目: https://github.com/floyernick/Data-Structures-and ...

  3. c语言数据结构之 快速排序

    编译器:VS2013 #include "stdafx.h"#include<stdlib.h> //函数声明 void QuickSort(int a[],int n ...

  4. python数据结构之快速排序

    def quick_sort(nums): if not nums: return [] else: # 这里取第0个数为基点 flag = nums[0] # 小于flag 的放到左边 left = ...

  5. Golang 数据结构

    每种语言在实现数据结构有些许不同.go 是如何实现的呢? 1. 数组 Array go 中数组是相同的元素组成的集合,计算机会为数组分配一段连续的内存来保存元素,可以利用索引快速访问元素. go 中数 ...

  6. C_数据结构_快速排序

    # include <stdio.h> void QuickSort(int * a, int low, int high); int FindPos(int * a, int low, ...

  7. golang的并行快速排序

    .nums[]作为core,将nums中大于core的元素放入greater,将不大于core的元素放入less 当nums长度为1时往ch中写入此元素 .分别对less和greater进行1操作(并 ...

  8. golang数据结构之队列

    队列可以用数组或链表实现,遵从先入先出. 目录结构: 在main中调用queue包中的属性和方法,如何调用参考另一篇文章: https://www.cnblogs.com/xiximayou/p/12 ...

  9. golang数据结构之循环链表

    循环链表还是挺有难度的: 向链表中插入第一条数据的时候如何进行初始化. 删除循环链表中的数据时要考虑多种情况. 详情在代码中一一说明. 目录结构如下: circleLink.go package li ...

随机推荐

  1. dedecmsV5.7 插入记录并返回刚插入数据的自增ID

    //插入一条数据 $sql = "INSERT INTO `table_name` (`name`,age) VALUES ('小明','23')"; $dsql->SetQ ...

  2. 经典案例:如何优化Oracle使用DBlink的SQL语句

    转自 https://blog.csdn.net/Enmotech/article/details/78788083 作者介绍 赵全文 就职于太极计算机股份有限公司,在中央电化教育馆做Oracle D ...

  3. Lua 5.1 学习笔记

    1 简介 2 语法 2.1 语法约定 2.1.1 保留关键字 2.1.2 操作符 2.1.3 字符串定义 2.2 值与类型 2.2.1 强制转换 2.3 变量 2.3.1 索引 2.3.2 环境表 2 ...

  4. Java入门系列之集合ArrayList源码分析(七)

    前言 上一节我们通过排队类实现了类似ArrayList基本功能,当然还有很多欠缺考虑,只是为了我们学习集合而准备来着,本节我们来看看ArrayList源码中对于常用操作方法是如何进行的,请往下看. A ...

  5. (三十六)c#Winform自定义控件-步骤控件-HZHControls

    官网 http://www.hzhcontrols.com 前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kww ...

  6. UITableView HeaderView,FooterView 使用SnapKit布局导致约束异常

    今天做一个APP里面设置页面(个人中心) 就是一个列表菜单 顶部是一个头像和账户标题, 底部为一个退出登录按钮 当然我第一时间就想到了UITableView, HeaderView, FooterVi ...

  7. ABP入门教程2 - 体系架构

    点这里进入ABP入门教程目录 介绍 应用程序代码库的分层是一种广泛接受的技术,可帮助降低复杂性并提高代码可重用性.为了实现分层体系结构,ASP.NET Boilerplate遵循域驱动设计的原理. D ...

  8. rdd里的foreach无法对外界产生影响

    rdd只能用Map返回结果.里面的操作对外界毫无影响 因为rdd是分区进行的,都是各个位置的操作,所以为保证数据没有问题,其中的数据对外界操作没有影响 想要有影响,就将rdd.collect()实例化 ...

  9. Nginx web基础入门

    目录 Nginx web基础入门 如何升级nginx或者添加功能 使用systemd管理nginx nginx相关配置文件 nginx的配置文件详解 日志格式 game日志记录实战 日志切割 手写虚拟 ...

  10. 渗透测试学习 二十九、kali安装,信息搜集,服务器扫描

    kali安装,信息搜集,服务器扫描 kali介绍 Kali Linux是基于Debian的Linux发行版, 设计用于数字取证操作系统.由Offensive Security Ltd维护和资助.最先由 ...