排序算法——选择排序(js语言实现)

选择排序:顾名思义选择,选择排序属于O(N^2)的排序算法,意思就是选择数组中的最小的拿出来放在第一位,然后再剩下的数里面,选择最小的,排在第二位,以此类推。

例如:8  3  4  5  6  2  1  7

第一次:寻找数组中最小的数1,然后和8替换,得到 1 3 4 5 6 2 8 7

第二次:因为1的位置已经确定,所以只需要找剩下数组中最小的就行了,2和3互换得到1 2 4 5 6 3 8 7

第三次:1和2的位置已经确定,就看剩下的数中最小的数,3和4互换,结果是1 2 3 5 6 4 8 7

.........就这样以此类推直到正确的结果为止1 2 3 4 5 6 7 8 ,代码如下

 1 var arr = [8,3,4,5,6,2,1,7];
 2
 3 function exchange(array, r1, r2){
 4     var temp = array[r1];
 5     array[r1] = array[r2];
 6     array[r2] = temp;
 7 }
 8
 9 function selectionSort(arr){
10     for(let i = 0;i < arr.length;i++){
11         var minIndex = i;
12         for(let j = i + 1; j < arr.length; j++){
13             if(arr[j] < arr[minIndex]){
14                 minIndex = j;
15             }
16         }
17         exchange(arr, i, minIndex);
18     }
19     return arr;
20 }
21
22 console.log(selectionSort(arr));

exchange互换函数,因为js语言中没有c++语言swap()函数实现值的互换,需要自定义函数来实现。selectionSort()函数的逻辑是两层for循环,把最小值的索引放在minIndex中。[8,3,4,5,6,2,1,7]

比如我们声明的数组第一次先把arr[minIndex]作为最小值,因为是第一次循环i=0;所以arr[0]当作最小值,接下来从(i+1)的索引开始判断,因为3<8,所以minIndex变为1,arr[minIndex]=arr[1]=3,又因为4>3,什么也不做,接着5>3,6>3,不作为。碰到2的时候,2<3,所以2的索引赋值给minIndex,此时minIndex=5,1的时候1<arr[5],1的索引值复制给minIndex,这个时候minIndex=6,由于7大于1,不作为。第一轮的循环,minIndex=6。执行exchange函数,8和1互换位置。就这样循环下去即可。

刚才又用一下es6的变量的解构赋值,亲测有效。

时间: 2024-12-21 11:24:06

排序算法——选择排序(js语言实现)的相关文章

经典排序算法 - 选择排序Selection sort

经典排序算法 - 选择排序Selection sort 顾名思意,就是直接从待排序数组里选择一个最小(或最大)的数字,每次都拿一个最小数字出来, 顺序放入新数组,直到全部拿完 再简单点,对着一群数组说,你们谁最小出列,站到最后边 然后继续对剩余的无序数组说,你们谁最小出列,站到最后边 再继续刚才的操作,一直到最后一个,继续站到最后边,现在数组有序了,从小到大 举例 先说看每步的状态变化,后边介绍细节,现有无序数组[6 2 4 1 5 9] 第一趟找到最小数1,放到最前边(与首位数字交换) 交换前

白话排序算法--选择排序

前言: 继续排序方法,紧接早上的插入排序,紧跟其后,现在跟新上选择排序算法 选择排序:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾.以此类推,直到所有元素均排序完毕. 情景描述: 新学期换了新体育老师,面对同样的排队情景,他说道:“我不管之前是怎么教的,之后都按照我的来做,大家自己进行选择排序”. 从第一位同学开始,和第二位同学比较,谁矮了,谁就记着目前自己是最矮的(可以站前面,嘿嘿), 然后再和第三位

算法 排序算法--选择排序

选择排序是排序算法的一种,这里以从小到大排序为例进行讲解. 基本思想及举例说明 选择排序(从小到大)的基本思想是,首先,选出最小的数,放在第一个位置:然后,选出第二小的数,放在第二个位置:以此类推,直到所有的数从小到大排序. 在实现上,我们通常是先确定第i小的数所在的位置,然后,将其与第i个数进行交换. 下面,以对 3  2  4  1 进行选择排序说明排序过程,使用min_index 记录当前最小的数所在的位置. 第1轮 排序过程 (寻找第1小的数所在的位置)3  2  4  1(最初, mi

排序算法--选择排序

# 选择排序##本小节知识点:1. [了解]选择排序2. [掌握]选择排序的基本思想3. [了解]练习 --- ##1.选择排序- 选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理如下.首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元 素,然后放到排序序列末尾.以此类推,直到所有元素均排序完毕. --- ##2.选择排序的基本思想- 第一趟排序在所有待排序的n个记录中选出关键字最小的记录,将它与数据表中的第一个记录交

经典排序算法——选择排序

对于一个int数组,请编写一个选择排序算法,对数组元素排序. 给定一个int数组A及数组的大小n,请返回排序后的数组. 测试样例: [1,2,3,5,2,3],6 [1,2,2,3,3,5] class SelectionSort { public: int* selectionSort(int* A, int n){ // write code here int k=0; for(int i=0;i<n;++i) { k=i; for(int j=i+1;j<n;++j)//找到最小元素 {

JavaScript排序算法——选择排序

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

排序算法——选择排序

选择排序:比如在一个长度为N的无序数组中,在第一趟遍历N个数据,找出其中最小的数值与第一个元素交换,第二趟遍历剩下的N-1个数据,找出其中最小的数值与第二个元素交换......第N-1趟遍历剩下的2个数据,找出其中最小的数值与第N-1个元素交换,至此选择排序完成. 1 void SelectSort(int unsort[],const int count) 2 { 3 int i, j, index; 4 int temp; 5 for (i = 0; i < count;i++) 6 { 7

图解排序算法-选择排序

选择排序图解:时间复杂度O(n^2),空间复杂度O(1) 数组:[243, 5, 7, 22, 3] 选出第一个最小值: 选出第二个最小值: 选出第三个最小值: 选出第四个最小值: 核心代码实现: 1 package org.apel.test.rp.test.sort; 2 3 /** 4 * 选择排序 5 * @author alex lee 6 * 7 */ 8 public class SelectionSort extends AbstractSort{ 9 10 public Sel

排序算法-选择排序(Java)

package com.rao.linkList; import java.util.Arrays; /** * @author Srao * @className SelectSort * @date 2019/12/4 11:27 * @package com.rao.linkList * @Description 选择排序 */ public class SelectSort { /** * 选择排序 * @param arr */ public static void selectSor