版权声明:转载必须注明出处,违者必究。 https://blog.csdn.net/qq_41856518/article/details/83904186
思路:(1)将整个序列划分为有序区和无序区,初始时有序区为空。
(2)在无序区找出最小元素,将其与无序区第一个元素交换。此时有序区扩展一个元素,无序区减少一个元素。
(3)重复(2)步骤,直至无序区剩最后一个元素。
如图:[]内代表无序区 s[5]={4,1,7,9,0}
初始: [4 1 7 9 0]
第一趟: 0 [1 7 9 4] 将4余0交换
第二趟: 0 1 [7 9 4] 最小值是1,直接加到有序区
第三趟: 0 1 4 [9 7] 将7与4交换
第四趟: 0 1 4 7 9 将9与7交换,完毕
代码如下:
#include<iostream>
using namespace std;
const int maxsize=10;
void selectsort(int s[],int n)
{
int i,j,index,temp;
for(i=0;i<n;i++)
{
index=i;
for(j=i+1;j<n;j++)
{
if(s[index]>s[j])
{
index=j;
}
}
if(index!=i)
{
temp=s[i];s[i]=s[index];s[index]=temp;
}
}
}
int main()
{
int s[maxsize],n;
cin>>n;
for(int i=0;i<n;i++)
cin>>s[i];
selectsort(s,n);
for(int i=0;i<n;i++)
cout<<s[i]<<" ";
cout<<endl;
}
运行结果: