专栏首页Golang开发SelectionSort选择排序

SelectionSort选择排序

1 算法步骤

  1. 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置
  2. 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
  3. 重复第二步,直到所有元素均排序完毕。

selectionSort.gif

Python 代码实现

def selectionSort(arr):
    for i in range(len(arr) - 1):
        # 记录最小数的索引
        minIndex = i
        for j in range(i + 1, len(arr)):
            if arr[j] < arr[minIndex]:
                minIndex = j
        # i 不是最小数时,将 i 和最小数进行交换
        if i != minIndex:
            arr[i], arr[minIndex] = arr[minIndex], arr[i]
    return arr

Go 代码实现

func selectionSort(arr []int) []int {
    length := len(arr)
    for i := 0; i < length-1; i++ {
        min := i
        for j := i + 1; j < length; j++ {
            if arr[min] > arr[j] {
                min = j
            }
        }
        arr[i], arr[min] = arr[min], arr[i]
    }
    return arr
}

Java 代码实现

 public  static int [] selectSort(int[] sourceArray) throws Exception{
        int[] arr = Arrays.copyOf(sourceArray,sourceArray.length);
        //总共需要进行N-1轮比较
        for (int i=0;i<arr.length-1;i++){
            int min = i;
            // 每轮需要后面的元素进行比较
            for(int j = i+1;j<arr.length;j++){
                if (arr[min]>arr[j])
                    min = j;
            }
            //将找到的最小值和当前坐标进行交换
            if (i!=min){
                int tmp = arr[i];
                arr[i] = arr[min];
                arr[min] = tmp;
            }
        }
        return arr;
    }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • BubbleSort冒泡排序

    冒泡排序是一种简单的排序算法。它适合小规模数据的排序,并且其效率比较低。冒泡排序是一种交换排序,它的基本思想是:两两比较相邻记录的关键字,如果反序则交换,直到没...

    羊羽shine
  • InsetSort插入排序

    羊羽shine
  • quickSort快速排序

    羊羽shine
  • Sort Algorithm

    生成随机的n个数量的数组,输出数组每一个元素的内容。测试排序算法使用的标准就是运行时间和排序的正确性,所以需要一个验证正确性和计算排序时间的:

    西红柿炒鸡蛋
  • Data Structure_Sort Algorithm

    生成随机的n个数量的数组,输出数组每一个元素的内容。测试排序算法使用的标准就是运行时间和排序的正确性,所以需要一个验证正确性和计算排序时间的:

    西红柿炒鸡蛋
  • 排序算法算法对比

    排序大的分类可以分为两种:内排序和外排序。在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序。下面讲的排序都是属于内排序。...

    朱晓霞
  • 一维数组去重

    潇洒
  • [javaSE] 数组(获取最值)

    1.获取最值需要进行比较,每一次比较都会有一个较大的值,因为该值不确定,通过一个变量进行存储

    陶士涵
  • linux shell数组基础

    不管数值型还是字符串型,都是用一对圆括号表示,并且数组的元素之间用空格隔开,但是字符型的元素需要加引号 比如

    Y大宽
  • PHP对数组进行排序操作

    昨天别人问了我一个问题,瞬间把我给问懵了。事情是这样的,问我给到一个既定数组,现在让我实现下将数组元素从低到高升序排列。第一个反应是直接使用ksort之类排序函...

    世纪访客

扫码关注云+社区

领取腾讯云代金券