golang数据结构之选择排序

//SelectSort 选择排序
func SelectSort(arr *[7]int) {
    for i := 0; i < len(arr); i++ {
        tmp := arr[i]
        index := i
        for j := i + 1; j < len(arr); j++ {
            if (*arr)[j] < tmp {
                tmp = (*arr)[j]
                index = j
            }
        }
        if index != i {
            (*arr)[index], (*arr)[i] = (*arr)[i], (*arr)[index]
        }
        fmt.Printf("第%d次选择后的结果是:%v", i, *arr)
    }
}

原文地址:https://www.cnblogs.com/xiximayou/p/12017392.html

时间: 2024-11-03 16:32:02

golang数据结构之选择排序的相关文章

[golang] 数据结构-简单选择排序

原理简单选择排序应该是最直观最容易理解的排序方法了.直接从头开始一个一个去比,找出最小的放到最左边.再依次完成其他位的排序. 时间复杂度比较次数固定为O(n^2),数据交换次数是0~n-1次因为会交换不同位置相同数值的数据,所以选择排序并不稳定 代码实现 package main import ( "fmt" ) func main() { var length = 10 var mm = make(map[int]int, length) var o []int // 先准备一个顺序

[golang] 数据结构-树形选择排序(锦标赛排序)

接上文 简单选择排序简单选择排序很容易理解,代码也很容易实现.但毕竟比较次数太多.树形选择排序则对这个问题进行了改进. 原理简单来说,树形选择排序(Tree selection sort)就是在选择完一轮找出最小值后,直接在与最小值比较中稍大的元素里筛选出最小的.这样避免了简单选择查询那种,抛弃了之前比较过的结果,每次都全部重新比较的情况. 流程举例 先列出所有待排序的元素如:8.4.12.7.35.9.22,并用他们组成满二叉树的叶子元素,不足的位置以∞作为补充.将元素两两相比较,分别得到较小

数据结构 - 简单选择排序(simple selection sort) 详解 及 代码(C++)

数据结构 - 简单选择排序(simple selection sort) 本文地址: http://blog.csdn.net/caroline_wendy/article/details/28601965 选择排序(selection sort) : 每一趟在n-i+1个记录中选取关键字最小的记录作为有序序列中第i个记录. 简单选择排序(simple selection sort) : 通过n-i次关键字之间的比较, 从n-i+1个记录中选出关键字最小的记录, 并和第i个记录交换. 选择排序需

数据结构之——选择排序

选择排序的基本思想为:每一趟(例如第i趟)在后面的n-i+1(i=1,2,3,…...,n-1)个待排序元素中选取关键字最小的元素,作为有序序列的第i个元素,直到n-1趟做完,待排序元素只剩下一个,就不用选了,序列也排序完毕.选择排序主要有简单选择排序和堆排序,下面分别就这两种排序算法进行讨论. 1.简单选择排序 从上面选择排序的思想中可以很直观的得出简单选择排序的算法思想:假设排序列表为L[1……n],第i趟排序从L[i……n]中选择关键字最小的元素与L(i)交换,每一趟排序可以确定一个元素的

数据结构之选择排序--简单选择排序

排序思路:在要排序的一组数中,选出最小的一个数与第一个位置的数交换:然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环.算法实现: public static void selectSort(int arr[]){ int temp; for(int i = 0;i < arr.length-1; i ++){//有N个元素只需比较N-1次 int min = i;//记住初始位置 for(int j = i+1; j < arr.length; j ++){//在 [i+1,arr.

算法与数据结构之选择排序(C语言)

1 #include<stdio.h> 2 #include<stdlib.h> 3 void SelectSort(int *a,int n);//预声明要调用的函数 4 int main(void) 5 { 6 int k; 7 int x[10]={2,4,6,8,0,1,3,5,7,9}; 8 for(k=0;k<10;k++) 9 printf("%d",x[k]); 10 printf("\n"); 11 SelectSor

【数据结构】选择排序算法示例

基本选择排序编辑 排序算法即解决以下问题的算法: 输入 n个数的序列<a1,a2,a3,...,an>. 输出 原序列的一个重排<a1*,a2*,a3*,...,an*>:,使得a1*<=a2*<=a3*<=...<=an* 排序算法有很多,包括插入排序,冒泡排序,堆排序,归并排序,选择排序,计数排序,基数排序,桶排序,快速排序等.插入排序,堆排序,选择排序,归并排序和快速排序,冒泡排序都是比较排序,它们通过对数组中的元素进行比较来实现排序,其他排序算法则是

大话数据结构——简单选择排序

在学了冒泡排序后,会发觉这种算法就是不断比较交换.虽简单直接,显然给人一种繁琐的感觉.那有没有更好一点的算法呢?这当然有啦,没有就糟糕透了 :-P 这篇文章介绍一种较冒泡要好的排序算法:简单选择排序 看到“选择”这两字估计也猜到一二了.没错,这种算法的思想就是:待找到了最适合的那位数的位置我才选择与它进行交换 这样做,我们大大省下了很多不必要的交换.因为在代码编写中,交换函数是经常使用,所以一般将其封装成一个函数进行调用.如果存在非常多不必要的交换操作,这就产生了非常多不必要的函数调用.要知道,

数据结构_选择排序

选择排序介绍 选择排序(Selection sort)是一种简单直观的排序算法.它的基本思想是:首先在未排序的数列中找到最小(or最大)元素,然后将其存放到数列的起始位置:接着,再从剩余未排序的元素中继续寻找最小(or最大)元素,然后放到已排序序列的末尾.以此类推,直到所有元素均排序完毕.  总结:两个for循环=一个for喜欢i=0-(n-1)+一个for循环寻找比i小的数组的坐标用min存起来+一个交换的过程 /* * 设置一个参考存储坐标,和冒泡的区别是不需要频繁的移动交换,它只需要找坐标