选择排序是一种简单直观的排序算法,首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
算法步骤:
-
初始状态:无序序列为R[0,n−1],长度n,有序区为空;
-
第i=1,…,n−1趟排序从当前无序区R[i−1,n−1]中选出最小的元素R[k],并将它与无序区的第1个记录R[i−1]交换,则R[0,i−1]变为元素个数增加1的新有序区,R[i,n−1]变为元素个数减少1的新无序区;
-
n−1趟选择交换后结束。
代码展示
#include<iostream>
using namespace std;
void SelectSort(int a[],int n)//选择排序
{
for(int i=0; i<n-1; i++)
{
int index=i;
for(int j=i+1; j<n; j++)
{
if(a[j]<a[index])//寻找无序区内的最小值
index=j;
}
if(index!=i) //把找到的最小值放到无序区的最前面
{
int tmp=a[index];
a[index]=a[i];
a[i]=tmp;
}
}
}
int main()
{
int a[5]={
7,3,1,5,70
};
SelectSort(a,5);
return 0;
}