快速排序

来源:互联网 发布:c语言教程电子书 编辑:程序博客网 时间:2024/05/22 07:44
#include <iostream>using namespace std;const int SIZE=50;void sort(int arr[],int l,int r);int main(){   int arr[SIZE],i,no;   cin>>no;   for (i=0;i<no;i++)       cin>>arr[i];   sort(arr,0,no-1);   for (i=0;i<no;i++)       cout<<arr[i]<<" ";   cout<<endl;   return 0;}void sort(int arr[],int l,int r){   if(l<r)   {      int i=l,j=r,x=arr[l];  while(i<j)  {      while(i<j && arr[j]>=x)  j--;  if(i<j)  arr[i++]=arr[j];  while(i<j && arr[i]<x)  i++;  if(i<j)  arr[j--]=arr[i];  }  arr[i]=x;  sort(arr,l,i-1);  sort(arr,i+1,r);   }}
#include <algorithm>using std::swap;void sort(int* a, int n){if(n<=1) return;if(n==2){if(a[1]<a[0]) swap(a[1],a[0]);return;}swap(a[n/2],a[0]);int jie=a[0];int* L=a+1;int* R=a+n-1;while(L<R){while(L<R&&*L<jie) ++L;while(a<R&&!(*R<jie)) --R;if(L<R) swap(*L,*R);}if(*R<jie) swap(*R,a[0]);sort(a, R-a);sort(R+1,n-1-(R-a));}
#include <iostream>using namespace std;#include <ctime>void sort(int* a, int n);int main(){const int N=10240;int a[N];for(int i=0; i<N; i++)a[i] = N-i;for(int i=0; i<10; i++)cout << a[i] << ' ';cout << endl;clock_t t1 = clock();sort(a,N);clock_t t2 = clock();cout << double(t2-t1)/CLOCKS_PER_SEC << endl;for(int i=0; i<10; i++)cout << a[i] << ' ';cout << endl;}

引用v_JULY_v的博客:

快速排序算法:http://blog.csdn.net/v_july_v/article/details/6116297

快速排序算法的深入分析:http://blog.csdn.net/v_JULY_v/article/details/6211155

快速排序算法之所有版本的c/c++实现:http://blog.csdn.net/v_JULY_v/article/details/6262915



0 0
原创粉丝点击