Go语言实现选择法排序实例
本文实例讲述了Go语言实现选择法排序的方法。分享给大家供大家参考。具体实现方法如下:
package main
import "fmt"
func select_sort(a []int) {
len := len(a)
for i:=0; i < len-1; i++ {
k := i
j:= i + 1
for ; j < len; j++ {
if a[j] < a[k] { k = j }
}
if k != i {
a[i], a[k] = a[k], a[i]
}
}
}
func print_array(a []int) {
for i := 0; i < len(a) - 1; i++ {
fmt.Printf("%d, ", a[i])
}
fmt.Print(a[len(a)-1])
}
func main() {
a := []int{1, 8, 5, 9, 4, 3, 6, 6}
print_array(a)
fmt.Printf("\n")
select_sort(a)
print_array(a)
}
输入:
1, 8, 5, 9, 4, 3, 6, 6
输出:
1, 3, 4, 5, 6, 6, 8, 9
希望本文所述对大家的Go语言程序设计有所帮助。
相关推荐
-
深入解析快速排序算法的原理及其Go语言版实现
快速排序是一种基于分治技术的重要排序算法.不像归并排序是按照元素在数组中的位置对它们进行划分,快速排序按照元素的值对它们进行划分.具体来说,它对给定数组中的元素进行重新排列,以得到一个快速排序的分区.在一个分区中,所有在s下标之前的元素都小于等于A[s],所有在s下标之后的元素都大于等于A[s]. 显然,建立了一个分区以后,A[s]已经位于它在有序数组中的最终位置,接下来我们可以继续对A[s]前和A[s]后的子数组分别进行排序(使用同样的方法). 为了排序一个数组A的全部元素,初始调用的是QUI
-
Go语言实现冒泡排序、选择排序、快速排序及插入排序的方法
本文实例讲述了Go语言实现冒泡排序.选择排序.快速排序及插入排序的方法.分享给大家供大家参考.具体分析如下: 算法是程序的灵魂,而排序算法则是一种最基本的算法.排序算法有许多种,这里介绍4中排序算法:冒泡排序,选择排序,快速排序和插入排序,以从小到大为例. 一.冒泡排序 冒泡排序的原理是,对给定的数组进行多次遍历,每次均比较相邻的两个数,如果前一个比后一个大,则交换这两个数.经过第一次遍历之后,最大的数就在最右侧了:第二次遍历之后,第二大的数就在右数第二个位置了:以此类推. 复制代码 代码如下:
-
golang使用sort接口实现排序示例
本文实例讲述了golang使用sort接口实现排序的方法.分享给大家供大家参考,具体如下: 今天看见群里再讨论排序的sort.Interface的实现,有童鞋一直搞不定,我就上手了一下,哦耶搞定了,代码放在这里. 其实很简单sort.Interface借口有三个方法,给自己的struct实现这三个方法,然后用将自己的结构体传给sort.Sort方法就排序完成. 当然sort包也有几个常用的方法sort.Float64Slice sort.IntSlise sort.StringSlise,呵呵
-
go语言睡眠排序算法实例分析
本文实例讲述了go语言睡眠排序算法.分享给大家供大家参考.具体分析如下: 睡眠排序算法是一个天才程序员发明的,想法很简单,就是针对数组里的不同的数开多个线程,每个线程根据数的大小睡眠,自然睡的时间越长的,数越大,哈哈,搞笑吧,这种算法看起来很荒唐,但实际上很天才,它可以充分利用多核cpu进行计算. 复制代码 代码如下: package main import ( "fmt" "time" ) func main() { tab := []in
-
深入理解golang的基本类型排序与slice排序
前言 其实golang的排序思路和C和C++有些差别. C默认是对数组进行排序, C++是对一个序列进行排序, Go则更宽泛一些,待排序的可以是任何对象, 虽然很多情况下是一个slice(分片, 类似于数组),或是包含 slice 的一个对象. 排序(接口)的三个要素: 1.待排序元素个数 n : 2.第 i 和第 j 个元素的比较函数 cmp : 3.第 i 和 第 j 个元素的交换 swap : 乍一看条件 3 是多余的, c 和 c++ 都不提供 swap . c 的 qsort 的用法:
-
Go语言展现快速排序算法全过程的思路及代码示例
快速排序算法 快速排序是一个递归的思想,首先选择一个数作为基数,把数组中小于它的数放在它的左边,把大于它的数放在它的右边,然后对左右两边的数递归进行排序. 算法的关键部分是实现数组的划分,即怎么把数组的元素划分成两部分,使得左边的数比基数小,右边的数比基数大.划分有许多不同的实现方法,这里主要使用单向扫描的方法,后面再稍微介绍双向扫描的方法. 选择最右边的数字作为基数.使用一个变量j记录当前左边数字(比基数小的数)的最右的下标值.然后使用变量i从左到右遍历数组,如果a[i]比基数小,说明a[i]
-
Go语言使用sort包对任意类型元素的集合进行排序的方法
本文实例讲述了Go语言使用sort包对任意类型元素的集合进行排序的方法.分享给大家供大家参考.具体如下: 使用sort包的函数进行排序时,集合需要实现sort.Inteface接口,该接口中有三个方法: 复制代码 代码如下: // Len is the number of elements in the collection. Len() int // Less reports whether the element with // index i should sort before t
-
Go语言排序算法之插入排序与生成随机数详解
前言 排序,对于每种编程语言都是要面对的.这里跟大家一起分享golang实现一些排序算法,并且说明如何生成随机数.下面话不多说了,来一起看看详细的介绍吧. 经典排序算法 算法的学习非常重要,是检验一个程序员水平的重要标准.学习算法不能死记硬背,需要理解其中的思想,这样才能灵活应用到实际的开发中. 七大经典排序算法 插入排序 选择排序 冒泡排序 希尔排序 归并排序 堆排序 快速排序 插入排序 先考虑一个问题:对于长度为n的数组,前n-1位都是递增有序的,如何排序? 1.从第1位至第n-1位遍历数组
-
Go语言排序与接口实例分析
本文实例讲述了Go语言排序与接口用法.分享给大家供大家参考.具体如下: 复制代码 代码如下: import "fmt" type Sorter interface { Len() int Less(i, j int) bool Swap(i, j int) } type Xi []int type Xs []string func (p Xi) Len() int { return len(p) } func (p Xi) Less(i int, j int) bool {
-
GOLANG版的冒泡排序和快速排序分享
//冒泡排序 func mpSort(array []int) { for i:=0;i<len(array);i++ { for j:=0;j<len(array)-i-1;j++ { if array[j] > array[j+1] { array[j], array[j+1] = array[j+1], array[j] } } } } //快速排序 func quickSort(array []int, left int, right int) { if left < ri
随机推荐
- 获取音乐文件的播放时间及当前进度
- iOS实现相册和网络图片的存取
- Oracle 实现类似SQL Server中自增字段的一个办法
- 浅析JavaScript的几种Math函数,random(),ceil(),round(),floor()
- 手把手教你做超酷的条形码效果第1/3页
- js和jq使用submit方法无法提交表单的快速解决方法
- 详解Ruby中正则表达式对字符串的匹配和替换操作
- Golang最大递减数算法问题分析
- Mysql 5.5.56版本(二进制包安装)自定义安装路径步骤记录
- curl实现站外采集的方法和技巧
- 微信小程序 图片宽高自适应详解
- Mongodb安装与配置笔记
- javascript框架设计之浏览器的嗅探和特征侦测
- 鼠标滑过出现预览的大图提示效果
- 模拟弹出菜单的代码
- Android中使用Service实现后台发送邮件功能实例
- 任务栏里的显示桌面丢失了的解决方法
- JS基于for语句编写的九九乘法表示例
- JDK动态代理之ProxyGenerator生成代理类的字节码文件解析
- SpringBoot项目设置断点debug调试无效忽略web.xml问题的解决