选择排序-蛮力法

版权声明:转载必须注明出处,违者必究。 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;
}

运行结果:

猜你喜欢

转载自blog.csdn.net/qq_41856518/article/details/83904186
今日推荐