zoukankan      html  css  js  c++  java
  • 简单算法系列:快速算法/冒泡算法两则

    工作较忙,没办法抽出时间专心攻克《Go语言编程》,随着了解的更多,越发体会出这本书中小例子的精巧。

    掌握这些小例子,就可以完成Go基础的全面掌握

    最近抽出时间专心敲这些例子。但是发现一些问题,在设计上,许大大的算法可能更难让我理解一点。特对关于二章中结尾例子中算法,写出自己的算法,较之,我自己写的,更方便自己理解。

    /*
    快速排序算法
    */
    func quicSort(values []int){
    if len(values) <= 1{
    return
    }

    mid, i := values[0], 1 //取出第一个键的值,且直接给变量i赋予数组中的第二个键,方便比对
    head, tail := 0, len(values) - 1 //直接给变量head赋予数组中的第一个键,还有数组的数量

    for head < tail {

    if mid < values[i] {
    values[i], values[tail] = values[tail], values[i] //比它大的,就往后扔
    tail-- //往后扔一个,就少扔一次
    }else{
    values[head], values[i] = values[i], values[head]//比它小的,就往前扔
    head++//往前扔一个,也少扔一次
    i++//比对的键值,进行+1
    }
    }

    values[head] = mid//此时关键值,应当就在head这个键值上

    quicSort(values[:head])//递归
    quicSort(values[head + 1:])//递归
    }

    /*
    冒泡算法
    */

    func bubbleSort(values []int){
    for i := 0; i < len(values); i++ {

    for z := i + 1; z < len(values); z++ {
    if values[i] > values[z]{
    values[i], values[z] = values[z], values[i]
    }
    }
    }
    }

    冒泡算法比较简单,就不做介绍了,就是从头算到尾。
  • 相关阅读:
    浅析Java源码之LinkedList
    浅析Java源码之ArrayList
    Vue源码终笔-VNode更新与diff算法初探
    Vue源码后记-更多options参数(2)
    Vue源码后记-更多options参数(1)
    Vue源码后记-其余内置指令(3)
    Vue源码后记-其余内置指令(2)
    Vue源码后记-其余内置指令(1)
    Vue源码后记-vFor列表渲染(3)
    Linux/CentOS 7 timezone 修改
  • 原文地址:https://www.cnblogs.com/supermarx/p/6938380.html
Copyright © 2011-2022 走看看