选择排序,就是把一个无序序列,转化成一个有序序列。
1.把无序序列的第一个值为起始,然后拿来与无序数列进行比较。
2.找出最小无序数列中最小的值,并放入有序数列中的第一位。
3.在从无序数列的第二个值再比较,找出无序数列中最小的值放入到有序数列的第二位(此时的无序数组已经少了一个数,因为第一个数已经在第二步找到了,那个就是最小的值)
4.依次类推,就完成从大到小的排序
复杂度分析:
选择排序的交换操作介于 0 和 ( n - 1 ) 次之间。选择排序的比较操作为 n ( n - 1 ) / 2 次之间。选择排序的赋值操作介于 0 和 3 ( n - 1 ) 次之间。
比较次数O(n^2),比较次数与关键字的初始状态无关,总的比较次数N=(n-1)+(n-2)+...+1=n*(n-1)/2。 交换次数O(n),最好情况是,已经有序,交换0次;最坏情况是,逆序,交换n-1次。 交换次数比冒泡排序少多了,由于交换所需CPU时间比比较所需的CPU时间多,n值较小时,选择排序比冒泡排序快。
//选择排序
function selection_sort($array){
//计算出数组的长度
$count = count($array);
//外层循环需要n-1次
for ($i=0;$i<$count-1;$i++){
//把外层循环的$i设置为最小数的键值数
$min = $i;
//内层循环n为起始数
for($j=$i+1; $j<$count;$j++){
if($array[$min] > $array[$j]){
$min = $j;
}
}
//把无序数组的最小数依次放到有序数组里
$temp = $array[$min];
$array[$min] = $array[$i];
$array[$i] = $temp;
}
return $array;
}
分享到:
相关推荐
### Python实现的选择排序算法知识点详解 #### 一、选择排序的基本概念 选择排序(Selection Sort)是一种简单直观的比较排序算法。它的基本思想是:在未排序序列中找到最小(或最大)元素,存放到排序序列的起始...
选择排序算法是计算机科学中较为基础且应用广泛的排序方法之一。它基于简单的比较和交换机制,对一系列数据项进行排序。尽管选择排序在理论上的时间复杂度并不高,但在实际应用中,由于其排序过程中交换元素的频率较...
Java选择排序是一种简单直观的排序算法,它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。选择排序属于不稳定的排序方法,其时间...
java排序算法之选择排序 选择排序是一种简单的排序算法,它的工作原理是从未排序好的序列中选择出最小(或最大)的元素,然后与第i趟排序的第i-1个位置的元素进行交换。整个排序过程只需要遍历n-1趟便可排好,最后...
选择排序是一种简单的排序算法,它的核心思想是通过重复地找到待排序数组中的最小(或最大)元素,并将其放置到排序序列的起始位置,从而逐步构建一个有序序列。在C++中,我们可以用函数来实现这个算法。下面是对...
C++实现选择排序(selectionSort) 选择排序是常见的排序算法之一,主要思路是每次选择未排序的最小值,并将其放在已排序的末尾,以此达到整个数组的排序。下面是C++实现选择排序的详细介绍: 一、思路 选择排序...
选择排序算法详解 选择排序是一种简单、直观的排序算法,它是对冒泡排序算法进行优化后得到的一种排序算法。相比冒泡排序,选择排序减少了对序列进行排序的过程中元素移动的次数。 原理描述方式 1: 以对序列进行...
选择排序是一种简单的排序算法,它的基本思想是在未排序的序列中找到最小(或最大)的元素,存放到排序序列的起始位置,然后再从剩余未排序的元素中继续寻找最小(或最大)的元素,然后放到已排序序列的末尾。...
选择排序: 选择排序(Selection sort)是一种简单直观的 排序算法 。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,...
选择排序是计算机科学中一种简单直观的排序算法。该算法在每一趟选择中,都会从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。选择排序是一种原地的、不...
**选择排序**是一种基础的排序算法,主要原理是通过不断地比较元素来确定它们的相对顺序。在Python中,选择排序可以实现为升序或降序排列。本节内容详细介绍了简单选择排序的原理、实现方式以及优化策略。 **1. ...
选择排序是一种基础的比较型排序算法,其基本原理是通过一系列的选择操作,逐步构建起一个有序的序列。在未排序的数据中,选择最小(大)的一个元素,存放在序列的起始位置,然后再从剩余未排序元素中继续寻找最小...
冒泡排序、选择排序和插入排序是三种基本的排序算法,它们都是针对数组或列表进行操作,目的是将无序的数据序列调整为升序或降序的有序序列。 **冒泡排序**: 冒泡排序的核心思想是通过重复遍历待排序的数列,比较...
选择排序是一种简单直观的排序算法,它的工作原理可以分为以下几个步骤: 1. **理解选择排序**:选择排序从数组的第一个元素开始,遍历数组寻找当前未排序部分的最小(或最大)元素。找到后,将这个最小(或最大)...
选择排序程序(C语言实现) 内容概要 本资源是一个使用C语言实现的选择排序算法程序。选择排序是一种简单直观的排序算法,通过每次从未排序部分选择最小(或最大)的元素,放到已排序部分的末尾,逐步完成整个数组的...
**选择排序**是一种基础的排序算法,其基本思想是通过n次比较,每次找到剩余未排序部分中的最小(或最大)元素,将其与未排序部分的第一个元素交换,从而逐步将未排序的部分减少,最终实现整个序列的排序。...
冒泡排序和选择排序是两种基础的排序算法,在计算机科学中有着广泛的应用,尤其是在学习编程语言如C语言时,理解并能实现这两种排序算法是非常重要的。下面将详细讲解这两种排序方法以及它们在C语言中的实现。 **...
简单选择排序
简单选择排序是一种原地排序算法,因为它不需要使用额外的存储空间,只需要一个交换变量,因此其空间复杂度为O(1)。 在选择排序算法中,算法复杂度是一个重要的知识点。简单选择排序算法的执行时间并不依赖于输入的...