2388 Who's in the Middle(简单排序)

训练计划的第一个问题,首先从水问题开始:排序的数组,中间数则输出。

http://poj.org/problem?id=2388

冒泡排序:

#include <iostream>

using namespace std;

int main()
{
    int i, j, n,t;
    int a[10000];
    cin>>n;
    for(i=0; i<n; i++)
    {
        cin>>a[i];
    }

//冒泡排序
    for(i=0; i<n-1; i++)
        for(j=0; j<n-i-1; j++)
            if(a[j]<a[j+1])
            {
                t=a[j];
                a[j]=a[j+1];
                a[j+1]=t;
            }

    cout<<a[n/2]<<endl;
    return 0;
}


高速排序:

#include <iostream>

using namespace std;

//高速排序
void qsort(int a[ ], int l, int r)
{
    int x=a[l], i=l, j=r;
    if(l>=r) return;
    while(i<j)
    {
        while(i<j && a[j]>=x) j--;
        a[i]=a[j];
        while(i<j && a[i]<=x) i++;
        a[j]=a[i];
    }
    a[i]=x;
    qsort(a,l,i-1);
    qsort(a,i+1,r);
}
int main()
{
    int i, n;
    int a[10000];
    cin>>n;
    for(i=0; i<n; i++)
    {
        cin>>a[i];
    }
    qsort(a,0,n-1);
    cout<<a[n/2]<<endl;
    return 0;
}



版权声明:本文博客原创文章。博客,未经同意,不得转载。

posted @ 2015-08-06 12:10  hrhguanli  阅读(173)  评论(0编辑  收藏  举报