选择排序

题目描述

以递归方法实现选择排序(从小到大),为便于检查,要求输出每一次操作后的数组元素的排列状况。

输入格式

两行输入,第一行表示数组元素个数,第二行表示数组元素,每个数之间以空格隔开

输出格式

每一行为一次操作后的输出

样例输入

 

5
3 1 5 4 2

样例输出

 

5
4 5
3 4 5
2 3 4 5
1 2 3 4 5
#include <iostream>
using namespace std;
void selectSort(int a[],int m ,int n);
int main()
{
    int n;
    cin >> n;
    int *a = new int[n];
    for (int i = 0;i < n;i++)
        cin >> a[i];
    selectSort(a,n-1,n);
    delete[] a;
    return 0;
}

void selectSort(int a[],int m ,int n) // m代表选的位置 
{
    if (m < 0){
        return;
    }
    for (int i = 0; i <= m; i++)
        if (a[i] > a[m])
        {
            int tmp;
            tmp = a[i];
            a[i] = a[m];
            a[m] = tmp;
         } 
    for (int i = m; i < n; i++)
        cout << a[i] << ' ';
    cout << endl;
    selectSort(a,m-1,n);
    
}

 

posted on 2018-05-08 22:34  平行线不会相交  阅读(204)  评论(0)    收藏  举报

导航