一、简介
选择排序也是一种简单直观的排序算法,工作原理是:开始时在序列中找到最小(大)的元素,放到序列的其实位置作为已排序序列,然后从生于未排序的元素中寻找最小(大)的元素,放到一排序序列的末尾。以此类推,直到所有元素均排序完毕。
二、过程
选择排序具体步骤如下
1.首先定义一个最小是min,用来存放序列的最小值。
2.第一轮:将第1个数作为最小值赋给min,然后一次比较第2~5个数,比较的数比min小的话,就将其父为min,最后将min和第1个数交换。
3.第二轮:此时第1个数已经是最小值了,现在寻找第二个最小值。将第2个数赋给min,然后比较第3~5个数,找出最小值将其和第2个数交换。
4.重复上述过程。
下面是选择排序的动图
三、代码
int n,i,j,a[2000]={5,4,3,2,1};
bool t;
void Selection_sort()
{
for (i=1;i<n;i++) //从1开始,最后一位不用比
for (j=i+1;j<=n;j++)
if (a[i]>a[j]) //a[i]是基本位,a[j]是当前位
swap(a[i],a[j]); //交换
}
时间复杂度:最坏情况:O(N^2)
最好情况:O(N^2)
空间复杂度:O(1)