美文网首页
专门处理大数据的快速排序算法

专门处理大数据的快速排序算法

作者: bocsoft | 来源:发表于2019-02-26 15:25 被阅读0次


import (
    "fmt"
    "math/rand"
)

func SortForMerge(arr []int, left int, right int) {
    for i := left; i <= right; i++ {
        temp := arr[i] //备份第一个
        var j int
        for j = i; j > left && arr[j-1] > temp; j-- { //定位
            arr[j] = arr[j-1] //数据往后移动
        }
        arr[j] = temp //插入
    }
}

func swap(arr []int, i int, j int) {
    arr[i], arr[j] = arr[j], arr[i]
}


func QuickSortX(arr []int, left int, right int) {
    if right-left < 2 { //数组剩下三个数,直接插入排序
        SortForMerge(arr, left, right)
    } else {
        //随机找一个数字,放在第一个位置
        swap(arr, left, rand.Int()%(right-left+1)+left)
        vdata := arr[left] //坐标数据,比我小,左边;比我大,右边
        lt := left         // arr[left+1,lt] < vdata
        gt := right + 1    //arr[gt,right] > vdata
        i := left + 1      // arr[lt+1.....i]==vata
        for i < gt {
            if arr[i] < vdata { //移到到小于的地方
                swap(arr, i, lt+1)
                lt++ //前进循环
                i++
            } else if arr[i] > vdata {
                swap(arr, i, gt-1) //移动到大于的地方
                gt--
            } else {
                i++
            }
        }

        swap(arr, left, lt)
        QuickSortX(arr, left, lt-1)
        QuickSortX(arr, gt, right)

    }
}

//节约内存,直接操作数据,不需要返回,快速排序核心程序
func QuicksortPlus(arr []int) {
    QuickSortX(arr, 0, len(arr)-1)
}

//用法
QuicksortPlus(arr)

相关文章

  • 专门处理大数据的快速排序算法

  • JS数据结构与算法-快速排序与二分查找算法

    快速排序快速排序是处理大数据集最快的排序算法之一。它是一种分而治之的算法,通过递归的方式将数据依次分解为包含较小元...

  • 七大排序算法之快速排序

    七大排序算法之快速排序 @(算法笔记)[排序算法, 快速排序, C++实现] [TOC] 快速排序的介绍: 快速排...

  • 排序算法-堆排序

    参考: Java排序算法(五):堆排序 【算法与数据结构】图说堆排序 【数据结构】排序算法:希尔、归并、快速、堆排...

  • 快速排序(JS)

    快速排序是处理大数据集最快的排序算法之一。它是一种分而治之的算法,通过递归的方式将数据依次分解为包含较小元素和较大...

  • 快速排序

    一、快速排序算法 快速排序(Quicksort)是对冒泡排序的一种改进。 二、算法思想 通过一趟排序将要排序的数据...

  • 算法学习(1)-排序算法

    八大排序算法九大排序算法再总结[经典排序算法][集锦][直观学习排序算法] 视觉直观感受若干常用排序算法 快速排序...

  • 分解javascript快速排序算法

    快速排序是处理大数据集最快的排序算法之一。它是一种分而治之的算法,通过递归的方 式将数据依次分解为包含较小元素和较...

  • 十大编程算法

    十大编程算法 算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο...

  • 排序算法6:快速排序

    数据结构与算法 快速排序为应用最多的排序算法,因为快速二字而闻名。快速排序和归并排序一样,采用的都是分治思想。 分...

网友评论

      本文标题:专门处理大数据的快速排序算法

      本文链接:https://www.haomeiwen.com/subject/sswayqtx.html