美文网首页算法
1、简单的快速排序+二分查找

1、简单的快速排序+二分查找

作者: 发条家的橙子 | 来源:发表于2019-08-16 20:04 被阅读0次
package main

import "fmt"

// 快速排序+二分查找

// 快速排序
func QuickSort(arr []int) []int {
    length := len(arr)
    if length <= 1 {
        return arr
    } else {
        spiltData := arr[0]
        low := make([]int, 0, 0)
        mid := make([]int, 0, 0)
        higth := make([]int, 0, 0)

        //mid = append(mid, spiltData)
        for i:=0; i<length; i++ {
            if arr[i] > spiltData {
                higth = append(higth, arr[i])
            } else if arr[i] < spiltData {
                low = append(low, arr[i])
            } else {
                mid = append(mid, arr[i])
            }
        }

        higth, low = QuickSort(higth), QuickSort(low)
        return  append(append(low, mid...), higth...)
    }
}

// 二分查找
func binSearch(arr []int, data int) int {
    low, hight := 0, len(arr)-1 // 找到最左和最右下标
    for low <= hight {
        mid := (low + hight)/2
        if data > arr[mid] {
            low = mid + 1
        } else if data < arr[mid] {
            hight = mid - 1
        } else {
            return mid
        }
    }
    return -1
}

func main()  {
    arr := []int{2, 3, 1, 5, 3, 7, 0}
    fmt.Println("未排序:", arr)
    arr1 := QuickSort(arr)
    fmt.Println("排序后:", arr1)
    index := binSearch(arr1, 7)
    if index == -1 {
        fmt.Println("没找到!")
    } else {
        fmt.Printf("找到数据%d, 下标为%d。", arr1[index], index)
    }
}

相关文章

  • 剑指Offer.C++.code6-10

    (1)排序和查找是面试考察算法的重点,如二分查找、归并排序、快速排序等;(2)查找:顺序查找、二分查找、哈希表查找...

  • Swift语言实现几个简单算法

    栈队列二分查找插入排序归并排序快速排序 栈 队列 二分查找 二分查找是用于快速查找到目标数据(已排序)的一种查找方...

  • 算法 - 1

    1. 快速排序1.1 学习分而治之1.2 快速排序的Demo方法1.3 快速排序的图解 2. 二分查找2.1 二分...

  • 2.4.2 查找和排序

    排序 复习1:冒泡排序 复习2:快速排序 查找 1)顺序查找2)二分查找 3)哈希表查找4)二叉排序树查找

  • PHP数组示例算法

    1、冒泡排序 2、归并排序 3、二分查找-递归 4、二分查找-非递归 5、快速排序 6、选择排序 7、插入排序

  • Java实现常见的算法

    主要罗列了常见的选择排序,冒泡排序和快速排序,还有二分查找的算法。 选择排序 冒泡排序 快速排序 二分查找 注意二...

  • javascript 算法

    快速排序 冒泡排序 二分查找

  • php算法

    冒泡排序 快速排序 二分查找

  • 算法

    快速排序 二分查找

  • 单链表快速排序和二分查找

    快速排序: 二分查找

网友评论

    本文标题:1、简单的快速排序+二分查找

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