交换排序-交换次数.

  •  
  • 数据结构实验之排序二:交换排序

  • Submit Statistic Discuss
  • 首先来了解一下, 排序大致可以分为哪几种:
  •   交换排序: 包括冒泡排序,快速排序。
  •       选择排序: 包括直接选择排序,堆排序。
  •       插入排序: 包括直接插入排序,希尔排序。
  •       合并排序: 合并排序。
  • #include<bits/stdc++.h>
    using namespace std;
    #define maxn 10005
    int a[maxn],b[maxn],sum1,sum2,n;
    void quicksort(int a[],int left,int right)
    {
        int temp=a[left];
        int i=left,j=right;
        if(i>=j)
            return;
        while(i<j)
        {
            while(i<j&&a[j]>=temp)
                j--;
            if(i!=j)sum1++;
            a[i]=a[j];
            while(i<j&&a[i]<=temp)
                i++;
            if(i!=j)sum1++;
            a[j]=a[i];
        }
        a[i]=temp;
        quicksort(a,left,i-1);
        quicksort(a,i+1,right);
    }
    int main()
    {
        while(cin>>n)
        {
            sum1=sum2=0;
            for(int i=1; i<=n; i++)
            {
                cin>>a[i];
                b[i]=a[i];
            }
            quicksort(a,1,n);
            for(int i=1; i<=n; i++)
                for(int j=i+1; j<=n; j++)
                    if(b[i]>b[j])
                    {
                        sum2++;
                        swap(a[i],a[j]);
                    }
            cout<<sum2<<" "<<sum1<<endl;
        }
        return 0;
    }
    
  •  
  •  

猜你喜欢

转载自blog.csdn.net/BePosit/article/details/82532481
今日推荐