博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
四种排序算法与二分查找
阅读量:4982 次
发布时间:2019-06-12

本文共 1725 字,大约阅读时间需要 5 分钟。

1. 冒泡排序

func BubbleSort(slice []int) []int {	i, j, okay, count := 0, 0, true, len(slice)	for i = 0; i < count-1; i++ { //最多需要进行count-1轮比较		okay = true		for j = 0; j < count-i-1; j++ { //每一轮比较的逻辑			if slice[j] > slice[j+1] {				slice[j], slice[j+1] = slice[j+1], slice[j]				okay = false			}		}		if okay { //当轮比较没有发生位置交换,说明已经排序完成,可提前退出循环			break		}	}	return slice}

 

2. 插入排序

func InsertSort(slice []int) []int {	var i, j int	count := len(slice)	for i = 1; i < count; i++ {		for j = i; j > 0; j-- { //通过比较,找插入位置			if slice[j-1] > slice[j] {				slice[j-1], slice[j] = slice[j], slice[j-1]			} else { //当前元素已找到插入位置,退出循环				break			}		}	}	return slice}

  

3. 选择排序

func SelectSort(slice []int) []int {	var i, j, minKey int	count := len(slice)	for i = 0; i < count-1; i++ {		minKey = i		for j = i + 1; j < count; j++ { //找最小数位置			if slice[minKey] > slice[j] {				minKey = j			}		}		if minKey != i {			slice[minKey], slice[i] = slice[i], slice[minKey]		}	}	return slice}

  

4. 快速排序

func QuickSort(slice []int, start, end int) {	if start >= end {		return	}	i, j := start, end	val := slice[(i+j)/2]	for i <= j {		for i <= end && slice[i] < val {			i++		}		for j >= start && slice[j] > val {			j--		}		if i <= j {			slice[i], slice[j] = slice[j], slice[i]			i++			j--		}	}	if start < j {		QuickSort(slice, start, j)	}	if end > i {		QuickSort(slice, i, end)	}}

  

5. 二分查找

func BinarySearch(slice []int, head, tail, value int) int {	if head > tail {		return -1	}	middle := (head + tail) / 2	if slice[middle] == value {		return middle	} else if slice[middle] < value {		return BinarySearch(slice, middle+1, tail, value)	} else {		return BinarySearch(slice, head, middle-1, value)	}}

  

转载于:https://www.cnblogs.com/wujuntian/p/11612892.html

你可能感兴趣的文章
SQL Server将一列的多行内容拼接成一行
查看>>
Spring Controller RequestMapping
查看>>
socket
查看>>
小程序 跳转问题 (来源见注明)
查看>>
JBPM4入门——9.自动节点单线执行
查看>>
//停止关联的进程
查看>>
SQL 生成公曆和農曆對照數據,公曆查找農曆和農曆查找公曆函數
查看>>
为何场效应管要用UGD与UGS(off)来比较判断夹断情况?
查看>>
.pem证书转xml格式字符串(.net)
查看>>
js构建ui的统一异常处理方案(二)
查看>>
三线程连续打印ABC
查看>>
ECharts
查看>>
初识网络爬虫
查看>>
git push 时不用每次都输入密码的方法
查看>>
54点提高PHP编程效率 引入缓存机制提升性能
查看>>
编解码-marshalling
查看>>
CDN原理
查看>>
java.lang.outofmemoryerror android
查看>>
coding
查看>>
省市联级(DataReader绑定)
查看>>