1. 程式人生 > >資料結構實驗之排序二-冒泡與快排

資料結構實驗之排序二-冒泡與快排

15 9

#include<iostream>
using namespace std;
int k;
void  qsort(int l,int r,int a[])
{
    if(l>=r)
        return ;
    int i=l,j=r,s=a[l];
    while(i<j)
    {
        while(i<j&&a[j]>=s)
            j--;
        a[i]=a[j];
        if(i!=j)
            k++;
        while(i<j&&a[i]<=s)
            i++;
        a[j]=a[i];
        if(i!=j)
            k++;
    }
    a[i]=s;
    qsort(l,i-1,a);
    qsort(i+1,r,a);
}
void maopao(int a[],int n)
{
    for(int i=1;i<=n-1;i++)
    {
        for(int j=1;j<=n-i;j++)
        {
            if(a[j]>a[j+1])
            {
                int t=a[j];
                a[j]=a[j+1];
                a[j+1]=t;
                k++;
            }
        }
    }
    cout<<k<<" ";
}
int main()
{
    int a[100001],b[100001],n,i,j;
    while(cin>>n)
    {
        k=0;
        for(i=1;i<=n;i++)
        {
            cin>>a[i];
            b[i]=a[i];
        }
        maopao(a,n);
        k=0;
        qsort(1,n,b);
        cout<<k<<endl;
    }
    return 0;
}