选择排序

【问题描述】

   有n个大小不等的梨, 请利用选择排序将他们按照从小到大的顺序排列, 并输出。 输入: 两行第一行一个整数n, 第二行n个随机正整数表示梨的重量( 1<=n<=100 )。 输出: 一行, 升序排列的整数序列。

【样例输入】

  5

  12 8 3 7 15

【样例输出】

  3 7 8 12 15

#include<iostream>
using namespace std;
int main(){
    int n,a[101],mina,pos; 
    cin>>n;
    for(int i=1; i<=n; i++){
        cin>>a[i];
    }
    // 选择排序: 每遍历一次序列找出最小值,然后最小值前置。
    for(int i=1; i<=n-1; i++){
        pos=i; // 假设下标为i元素是最小值,则记录其下标。 
        // 位置j是递增的。
        mina=a[i]; // 假设第一个元素最小,打擂台法。 
        for(int j=i+1; j<=n; j++){
            if(a[j]<mina){
                mina=a[j];
                pos=j; // 记录当前最小值元素的下标。 
            }
        }
        swap(a[pos], a[i]); // 交换位置 
    } 
    for(int i=1; i<=n; i++){
        cout<<a[i]<<" ";
    }
    return 0;
} 

 

posted @ 2022-07-28 18:01  Hi,小董先生  阅读(38)  评论(0)    收藏  举报