人人都会的选择排序

作者: 小杨同学97 | 来源:发表于2021-06-07 22:27 被阅读0次

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

1. 算法步骤

严蔚敏版《数据结构》中对选择排序的基本思想描述为:每一趟在n-i+1(i=1,2,...,n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。

具体来说,假设长度为n的数组arr,要按照从小到大排序,那么先从n个数字中找到最小值min1,如果最小值min1的位置不在数组的最左端(也就是min1不等于arr[0]),则将最小值min1和arr[0]交换,接着在剩下的n-1个数字中找到最小值min2,如果最小值min2不等于arr[1],则交换这两个数字,依次类推,直到数组arr有序排列。算法的时间复杂度为O(n²)。
简而言之,就是每次都从剩下部分(未排序部分)把最小值找出来。

2. 代码实现

PHP代码实现

<?php

function mySort($arr)
{
    # code...
    $len = count($arr);
    for($i = 0;$i < $len;$i++){
        for($j = $i + 1;$j < $len;$j++){
            if($arr[$i] > $arr[$j]){
                $temp = $arr[$i];
                $arr[$i] = $arr[$j];
                $arr[$j] = $temp;
            }
        }
    }
    return $arr;
}

$data = [9,7,4,1,6,5];
var_dump(mySort($data));

JavaScript 代码实现

function mySort(arr) {
    var len = arr.length;
    for(var i = 0;i < len;i++){
        for(var j = i + 1; j < len;j++){
            if(arr[i] > arr[j]){
                var temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
    }
    return arr;
}
var data = [2,7,4,8,1,9];
console.log(mySort(data))

3. 小结

  1. 时间复杂度:O(n²),其中n为数组的长度。
  2. 空间复杂度:O(1)

相关文章

  • 人人都会的选择排序

    选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越...

  • 算法-选择排序

    算 法:选择排序算法时间复杂度: 选择排序算法概述 选择排序伪代码 选择排序实现 选择排序算法概述 排序算法有许...

  • 常见排序算法

    这里介绍四种排序算法,选择排序、快速排序、归并排序、计数排序 选择排序(使用递归) 选择排序(使用循环) 快速排序...

  • 数据结构之排序

    选择排序1.直接选择排序 原理直接选择排序过程直接选择排序过程 实现: DataWrap.java来模拟待排序的数...

  • PHP常用算法

    基于选择的排序算法 常见的基于选择的排序算法有:冒泡排序、插入排序、选择排序、归并排序和快速排序,我们在选在排序算...

  • 记录几个常见的排序算法

    常见的排序有:快速排序、冒泡排序、希尔排序、选择排序、插入排序、归并排序 冒泡排序: 插入排序: 选择排序: 希尔...

  • 现实≠愿望

    文/落花聴雨 人人都会有梦想,人人都会有愿望。每个人都会面对无数的选择和决定。但,有时,愿望会被现实打败。追...

  • 常用的两种排序-冒泡、选择

    Swift版 冒泡排序 选择排序 OC版 冒泡排序 选择排序

  • java快速学习排序---选择排序

    1.java实现选择排序 (1)、图解选择排序 (2)、选择排序的思想 选择排序首先在未排序序列中找到最小(大)元...

  • 算法设计与分析——5.排序与树结构

    5.1 引言 5.2 递归与排序 5.2.1 选择排序 代码 5.1 选择排序的递归实现 代码 5.2 选择排序...

网友评论

    本文标题:人人都会的选择排序

    本文链接:https://www.haomeiwen.com/subject/ufbreltx.html