zoukankan      html  css  js  c++  java
  • 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;
    }

     

     
  • 相关阅读:
    标签的讲解
    属性分类
    LeetCode 003. 无重复字符的最长子串 双指针
    Leetcode 136. 只出现一次的数字 异或性质
    Leetcode 231. 2的幂 数学
    LeetCode 21. 合并两个有序链表
    象棋博弈资源
    acwing 343. 排序 topsort floyd 传播闭包
    Leetcode 945 使数组唯一的最小增量 贪心
    Leetcode 785 判断二分图 BFS 二分染色
  • 原文地址:https://www.cnblogs.com/BasilLee/p/3787624.html
Copyright © 2011-2022 走看看