首页 > 代码库 > Who's in the Middle(简单排序)

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;
}



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