ACM——简单排序

简单选择排序

时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte
总提交:836            测试通过:259

描述

 

给定输入排序元素数目n和相应的n个元素,写出程序,利用内排序算法中的简单选择排序算法进行排序,并输出排序过程中每趟及最后结果的相应序列。

 

输入

 

共两行,第一行给出排序元素数目n,第二行给出n个元素,1n400,每个元素值范围为 [0100000)

 

输出

 

三个部分

1部分为两行,第1行输出文字“Source:”,第2行给出原始序列;

2部分,开始输出文字“Select Sort:”,后续输出简单选择排序过程;

3部分,开始输出文字“Result:”,后续输出排序结果。

 

样例输入

7
48 36 68 72 12 48 2

样例输出

Source:
(48 36 68 72 12 48 2)
Select Sort:
(2) 36 68 72 12 48 48
(2 12) 68 72 36 48 48
(2 12 36) 72 68 48 48
(2 12 36 48) 68 72 48
(2 12 36 48 48) 72 68
(2 12 36 48 48 68) 72
Result:
(2,12,36,48,48,68,72)

提示

 数据结构A实验四

题目来源

CHENZ

 

#include<iostream>
using namespace std;
int main()
{
    int n,i;
    std::cin>>n;
    int *arr=new int[n];
    for(i=0;i<n;i++)
    {
        std::cin>>arr[i];
    }
    std::cout<<"Source:"<<std::endl;
    std::cout<<"(";
    for(i=0;i<n;i++)
    {
        std::cout<<arr[i];
        if(i<n-1)
            std::cout<<" ";
    }
    std::cout<<")"<<std::endl;
    std::cout<<"Select Sort:"<<std::endl;
    for(i=0;i<n;i++)
    {
        int k=i;
        for(int j=i+1;j<n;j++)
        {
            if(arr[j]<arr[k])
            {
                k=j;
            }
        }
        if(k!=i)//交换数据
        {
            arr[i]=arr[i]+arr[k];
            arr[k]=arr[i]-arr[k];
            arr[i]=arr[i]-arr[k];
            std::cout<<"(";
            for(int m=0;m<n;m++)
            {
                std::cout<<arr[m];
                if(m==i)
                    std::cout<<")";
                std::cout<<" ";
            }
            std::cout<<std::endl;
        }
    }
    std::cout<<"Result:"<<std::endl;
    std::cout<<"(";
    for(i=0;i<n;i++)
    {
        std::cout<<arr[i];
        if(i<n-1)
            std::cout<<",";
    }
    std::cout<<")"<<std::endl;
    return 0;
}

 

 
原文地址:https://www.cnblogs.com/BasilLee/p/3787624.html