输入:第一行输入n,接下来输入n个元素,

输出:最后经过选择排序后的顺序 ,排序的次数

 步骤:

重复执行n-1次下述处理

       找出未排序部分中最小值的位置minj

       将minj位置的元素与未排序部分的起始元素交换

#include<iostream>
#include<cstdio>
using namespace std;
int cnt;
void print(int a[],int n){
    for(int i=0;i<n;i++){
        if(i!=0)
            cout<<" ";
        cout<<a[i];
    }
    cout<<endl;
}

int selectSort(int a[],int n){
    int minj;
    cnt=0;
    for(int i=0;i<n-1;i++){     //i为未排序部分的起始位置
        minj=i;
        for(int j=i;j<n;j++){
            if(a[j]<a[minj]){    //找出未排序部分中最小值的位置minj
                minj=j;
            }
        }
        //将minj位置的元素与为排序部分的起始元素交换
        int t=a[i];
        a[i]=a[minj];
        a[minj]=t;
        if(i!=minj)
            cnt++;
    }
    return cnt;
}
int main(){
    int n;
    int a[101];
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>a[i];}
    cnt=selectSort(a,n);
    print(a,n);
    cout<<cnt<<endl;

    return 0;
}

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。