1 原理:
1) 外循环执行n-1次,内循环每次比较和交换n-i次(i为第i次外循环)
2) 从数组第一位开始循环,后面从第二个元素开始直到访问完数组中最后一个元素为止,遇到最小值则与之交换;然后进行第二次循环,从数组第二个元素开始,从第三个元素开始访问之后的所有元素,遇到最小值则与之交换……
2 时间复杂度(Time Complexity)
T(n)=O(n2)
3 空间复杂度(Space Complexity)
S(n)=O(1)
4 稳定性
定义:所有相等的数经过某种排序方法后,仍能保持它们在排序之前的相对次序,我们就说这种排序方法是稳定的。
因此选择排序不具有稳定性。
5 代码
//选择排序法
#include <iostream>
using namespace std;
int main()
{
//step 1:创建数组
void max(int b[],int n );
int a[5];
cout<<"input 5 numbers";
for (int j=1;j<6;j++)
cin>>a[j];
//step 2:调用核心函数:选择排序
max(a,6);
//step 3:打印排好序的数组
for (int k=1;k<6;k++)
cout<<a[k];
return 0;
}
void max(int b[],int n ) //选择排序
{
int m,min;
for (int i=1;i<n-1;i++)
{
min=i;
for (int j=i+1;j<n;j++)
{
if (b[j]<b[min] ) min=j;
}//注意这个循环是通过脚标交换位置实现的
m=b[i];
b[i]=b[min];
b[min]=m;
}
}