sslinux avatar

Golang编程——选择排序(Select Sort)

sslinux

Published: 31 Dec 2018 › Updated: 31 Dec 2018Golang编程——选择排序(Select Sort)

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:

Written by

Linux技术爱好者

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