zoukankan      html  css  js  c++  java
  • 交叉排序

                                                              交叉排序

    题目描写叙述

    输入N个数,把全部奇数位置上的数从小到大排序,把偶数位置上的数从大到小排序。

    输入

    输入的第一行是一个正整数N(2<=N<=100)。


    第二行是N个用空格隔开的整数。

    输出

    输出仅仅有一行N个数。是按要求排序后的序列。用空格隔开。

    演示样例输入

    6
    1 2 3 4 5 6

    演示样例输出

    1 6 3 4 5 2
    
    
    一.冒泡
    #include<stdio.h>
    #include<iostream>
    #include<string.h>
    #include<stack>
    using namespace std;
    int main()
    {
        int i,j,k,n,s,t,e,f;
        cin>>n;
        j=0;
        k=0;
        int a[110],b[110],c[110];
        for(i=1; i<=n; i++)
        {
            cin>>c[i];
    
            if(i%2==0)
            {
                a[j]=c[i];
                j++;
            }
    
            else
            {
                b[k]=c[i];
                k++;
            }
    
        }
        e=j;
        f=k;
    
        for(i=0; i<e-1; i++)
        {
            for(j=0; j<e-i-1; j++)
                if(a[j+1]>a[j])
                {
                    t=a[j];
                    a[j]=a[j+1];
                    a[j+1]=t;
                }
        }
        for(i=0; i<f-1; i++)
        {
            for(k=0; k<f-i-1; k++)
                if(b[k]>b[k+1])
                {
                    s=b[k];
                    b[k]=b[k+1];
                    b[k+1]=s;
                }
        }
        for(i=0; i<e; i++)
        {
            if(i == e-1 && n%2 == 0)
            {
                cout<<b[i]<<" " << a[i] << endl;
            }
            else if(i == e-1 && n%2 == 1)
            {
                cout<<b[i]<<" " << a[i] << " ";
                cout << b[i+1] << endl;
            }
            else
            {
                cout<<b[i]<<" " << a[i] << " ";
            }
    
        }
    }
    
    二、快排
    #include<stdio.h>
    #include<iostream>
    #include<algorithm>
    #include<string.h>
    #include<stack>
    using namespace std;
    int cmp(const void *a,const void *b)
    {
        return *(int*)b - *(int*)a;
    }
    
    int  main()
    {
        int n;
        while(cin >> n)
        {
            int a[10001],b[10001];
            int j = 0,k = 0;
            for(int i=1; i<=n; i++)
            {
                if(i%2 == 0)
                {
                    cin >> b[k++];
                }
                else
                {
                    cin >> a[j++];
                }
            }
            sort(a,a+j);
            qsort(b,n,sizeof(b[0]),cmp);
            for(int i=0;i<k;i++)
            {
                if(i == k-1 && n%2 == 1)
                {
                    cout << a[i] << " " << b[i] << " ";
                    cout << a[i+1];
                }
                else if(i == k-1 && n%2 == 0)
                {
                    cout << a[i] << " " << b[i] << endl;
                }
                else
                {
                    cout << a[i] << " " << b[i] << " ";
                }
    
            }
        }
        return 0;
    }



  • 相关阅读:
    My Vim
    POJ 3292 Semi-prime H-numbers
    洛谷P3954 成绩【民间数据】
    数据结构—栈/队列
    说服式设计(persuasive design)的行为模型
    发送邮件给某人:mailto标签
    如何识别和利用用户情绪
    HDU Good Numbers (热身赛2)
    atlas z 轴
    什么叫“默认邮件客户端没有正确安装”?
  • 原文地址:https://www.cnblogs.com/clnchanpin/p/6958928.html
Copyright © 2011-2022 走看看