快速排序 复习

发布时间:2019年08月28日 阅读:250 次

快速排序:

http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Index/problemdetail/pid/3491.html

#include <iostream>
#include<bits/stdc++.h>
using namespace std;
int a[900000];
void quicksort(int l,int r)
{
   if(l>r)return;
   int i = l;
   int j = r;
   int tmp = a[l];
   while(i<j){
     while(i<j&&a[j]>=tmp)j--;
     while(i<j&&a[i]<=tmp)i++;
     if(i<j)swap(a[i],a[j]);
   }
   swap(a[i],a[l]);
   quicksort(l,i-1);
   quicksort(i+1,r);

}
int main()
{

    int n;
    while(cin>>n)
    {


        for(int i=1; i<=n; i++)
        {

            cin>>a[i];
        }
        quicksort(1,n);
        int top = 1;
        for(int i=1; i<=n; i++)
        {
               if(top)top = 0;
            else cout<<" ";
            cout<<a[i];

        }
        cout<<endl;
    }

    return 0;
}

一趟快排:

#include <iostream>
#include<bits/stdc++.h>
using namespace std;
int a[900000];
int top,n;
void quicksort(int l,int r)
{
   if(l>r)return;
   int i = l;
   int j = r;
   int tmp = a[l];
   while(i<j){
     while(i<j&&a[j]>=tmp)j--;
     a[i] = a[j];
     while(i<j&&a[i]<=tmp)i++;
     a[j] = a[i];
     //if(i<j)swap(a[i],a[j]);
   }
//   swap(a[i],a[l]);
    a[i] = tmp;
//     for(int i=1;i<=n;i++){
//        cout<<a[i]<<" ";
//    }
//    cout<<endl;


//   quicksort(l,i-1);
//   quicksort(i+1,r);

}

bool cmp(int l,int r){
   top++;
   if(top>=0){

    for(int i=1;i<=n;i++){
        cout<<a[i]<<" ";
    }
    cout<<endl;
   }

  // cout<<l<<" "<<r<<endl;
   return l<r;

}
int main()
{

  //  int n;
    while(cin>>n)
    {


        for(int i=1; i<=n; i++)
        {

            cin>>a[i];
        }
        quicksort(1,n);
//       sort(a+1,a+1+n,cmp);
        int ttop = 1;
        for(int i=1; i<=n; i++)
        {
               if(ttop)ttop = 0;
            else cout<<" ";
            cout<<a[i];

        }
        cout<<endl;
    }

    return 0;
}


Tag:
相关文章

发表评论: