十大经典排序算法的 JavaScript 实现02-选择排序

55 篇文章 0 订阅
20 篇文章 0 订阅

选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。

 

1. 算法步骤

首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置

再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。

重复第二步,直到所有元素均排序完毕。

 

2. JavaScript 代码实现

function selectionSort(arr) {
var len = arr.length;var minIndex, temp;for (var i = 0; i < len - 1; i++) {        minIndex = i;for (var j = i + 1; j < len; j++) {if (arr[j] < arr[minIndex]) {     // 寻找最小的数                minIndex = j;                 // 将最小数的索引保存}}        temp = arr[i];        arr[i] = arr[minIndex];        arr[minIndex] = temp;}return arr;学习资料的话可以加下web前端开发学习裙:659加上479再加上860自己去群里下载下。}

3. Python 代码实现

 

def selectionSort(arr):
for i in range(len(arr) - 1):# 记录最小数的索引        minIndex = ifor 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

 

4. Go 代码实现

 

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

 

5. Java 代码实现

public class SelectionSort implements IArraySort {
@Overridepublic int[] sort(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;// 每轮需要比较的次数 N-ifor (int j = i + 1; j < arr.length; j++) {if (arr[j] < arr[min]) {// 记录目前能找到的最小值元素的下标                    min = j;}}// 将找到的最小值和i位置所在的值进行交换if (i != min) {int tmp = arr[i];                arr[i] = arr[min];                arr[min] = tmp;}}return arr;}}

 

6. PHP 代码实现

 

​​​​​​​

function selectionSort($arr){$len = count($arr);for ($i = 0; $i < $len - 1; $i++) {$minIndex = $i;for ($j = $i + 1; $j < $len; $j++) {if ($arr[$j] < $arr[$minIndex]) {$minIndex = $j;}}$temp = $arr[$i];$arr[$i] = $arr[$minIndex];$arr[$minIndex] = $temp;}return $arr;}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值