概述
二分查找
// 二分
func binarySearch(list []int, key int) int {
low, high := 0, len(list)-1
for low <= high {
mid := (low + high) / 2
if key < list[mid] {
high = mid - 1
continue
}
if key > list[mid] {
low = mid + 1
continue
}
return mid
}
return -1
}
插入排序
// 插入排序
func InsertionSort(a []int) {
n := len(a)
if n <= 1 {
return
}
for i := 1; i < n; i++ {
value := a[i]
j := i - 1
//查找要插入的位置并移动数据
for ; j >= 0; j-- {
if a[j] < value {
a[j+1] = a[j]
} else {
break
}
}
a[j+1] = value
}
}
冒泡排序
// 冒泡排序
func BubbleSort(a []int) {
length := len(a)
if length < 1 {
return
}
for i := 0; i < length; i++ {
// 提前退出标志
flag := false
for j := 0; j < length-i-1; j++ {
if a[j] > a[j+1] {
a[j], a[j+1] = a[j+1], a[j]
//此次冒泡有数据交换
flag = true
}
}
// 如果没有交换数据,提前退出
if !flag {
break
}
}
}
选择排序
// 选择排序
func SelectionSort(a []int) {
n := len(a)
if n <= 1 {
return
}
for i := 0; i < n; i++ {
// 查找最小值
minIndex := i
for j := i + 1; j < n; j++ {
if a[j] < a[minIndex] {
minIndex = j
}
}
// 交换
a[i], a[minIndex] = a[minIndex], a[i]
}
}
最后
以上就是舒心大侠为你收集整理的golang 实现二分查找、插入排序、冒泡排序、选择排序的全部内容,希望文章能够帮你解决golang 实现二分查找、插入排序、冒泡排序、选择排序所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复