交叉排序【冒泡排序】

来源:互联网 发布:s7_200 数据块定义 编辑:程序博客网 时间:2024/04/29 06:46

交叉排序

Time Limit: 1000ms   Memory limit: 32768K  有疑问?点这里^_^

题目描述

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

输入

输入的第一行是一个正整数N(2<=N<=100)。
第二行是N个用空格隔开的整数。

输出

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

示例输入

61 2 3 4 5 6

示例输出

1 6 3 4 5 2

提示

 
#include<bits/stdc++.h>using namespace std;int main(){    int a[110];    int n,t;    cin>>n;    for(int i=1;i<=n;i++)    {        cin>>a[i];    }    for(int i=1;i<=n-1;i++) //对奇数位置上的数进行从小到大排序    {        for(int j=1;j<=n-i-1;j=j+2)        {                if(a[j]>a[j+2])                {                    t=a[j];                    a[j]=a[j+2];                    a[j+2]=t;                }        }    }    for(int i=2;i<=n-1;i++) //将偶数位置的数从大到小排序    {        for(int j=2;j<=n-i;j=j+2)        {                if(a[j]<a[j+2])                {                    t=a[j];                    a[j]=a[j+2];                    a[j+2]=t;                }        }    }    for(int k=1;k<=n;k++)    {        if(k!=n)            cout<<a[k]<<" ";        else            cout<<a[k]<<endl;    }    return 0;}

0 0