
Golang编程——选择排序(Select Sort)
选择排序
常见排序方法:
- 冒泡排序
- 选择排序
- 插入排序
- 快速排序
1.冒泡排序
冒泡排序的(Bubble Sorting)的基本思想是:通过对待排序序列从后向前(从下标较大的元素开始),依次比较相邻元素的排序码,若发现逆序则交换,使排序码较小的元素逐渐从后部移向前部(从下标较大的单元移向下标较小的单元),就像水底下的气泡一样逐渐向上冒。
因为排序的过程中,个元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在排序过程中设置一个flag判断元素是否进行过交换。从而减少不必要的比较。
//在数组章节
2.选择排序
选择式排序也属于内部排序法,是从欲排序的数据中,按指定的规则选出某一元素,经过和其他元素重整,再依原则交换位置后达到排序的目的。
- 选择排序思想:
选择排序(select sorting) 也是一种简单的比较方法。它的基本思想是:
第一次从R[0]~R[n-1]中选取最小值,与R[0]交换;
第二次从R[1]~R[n-1]中选取最小值,与R[1]交换;
第三次从R[2]~R[n-1]中选取最小值,与R[2]交换;......
第i次从R[i-1]~R[n-1]中选取最小值,与R[i-1]交换,....
第n-1次从R[n-2]~R[n-1]中选取最小值,与R[n-2]交换,
总共通过n-1次,得到一个按顺序码从小到达排列的有序序列。
选择排序应用实例:
package main
import (
"fmt"
)
//编写函数selectSort,完成排序;
func SelectSort(arr *[6]int) {
//标准的访问方式
// (*arr)[1] = 600 <==> arr[1] = 600,编译器底层优化的功劳;
// arr[1] = 600
//1.先完成将第一个最大值和arr[0] ==> 先易后难;
//假设 arr[0] 就是最大值;
for j := 0; j < len(arr)-1; j++ {
max := arr[j]
maxIndex := j
//遍历后面,1---[len(arr)-1] 比较;
for i := j + 1; i < len(arr); i++ {
if max < arr[i] { //找到真真的最大值
max = arr[i]
maxIndex = i
}
}
//交换:
if maxIndex != j {
arr[j], arr[maxIndex] = arr[maxIndex], arr[j]
}
fmt.Printf("第%d次循环:%v\n", j+1, *arr)
}
}
func main() {
//定义一个数组,从大到小排序
arr := [6]int{10, 34, 19, 100, 80, 789}
fmt.Println("排序前:", arr)
SelectSort(&arr)
fmt.Println("排序后:", arr)
}
Leave Golang编程——选择排序(Select Sort) to:
Read more #golang posts
Best Posts From sslinux
We have not curated any of sslinux's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.
More Posts From sslinux
- Good.Luck.Charlie.S01E01-查莉成长日记S01E01(下)
- Good.Luck.Charlie.S01E01-查莉成长日记S01E01(上)
- 排错:centos7 未启用swap导致内存使用率过高。
- how-to-build-mysql-from-source-code-on-centos7
- Sword Fish
- 传销不挣钱为啥还有这么多人参与?美国大选为啥总是两党之争?李永乐老师讲一美元拍卖陷阱
- Ariana Grande - 7 rings(youtube music)
- 《流浪地球》科普答疑:人们为什么要去比邻星?太阳会爆炸吗?李永乐老师告诉你
- 2月为啥只有28天?竟然与凯撒和屋大维有关!李永乐老师讲公历演化(2018最新)
- 1+2+3+4+...=-1_12?李永乐老师讲黎曼猜想(1)