快速排序算法

来源:互联网 发布:网络有哪些用处 编辑:程序博客网 时间:2024/05/16 19:43
快速排序算法的主要思想(从小到大排序):首先设置一个基准数,以这个基准数为标准,先从右往左,找到比基准数小的数,然后从左往右,找到比基准数大的数,找到了然后就交换两个数,直到往右往左时重逢。比较重逢的数,如果比基准数小,就交换基准数,重新设置基准数,重逢以上步骤。以下为一个典型的例子:
#include <iostream.h>
int a[100],n;
 void quicksort(int left,int right);
 void quicksort(int left,int right)
 {
    int i,j,t,temp;
 if (left>right)
 {
  return ;
 }
 temp=a[left];
 i=left;
 j=right;
 while (i!=j)
 {
  while(a[j]>=temp && i<j)
   j--;
  while(a[i]<=temp &&i<j)
   i++;
  if (i<j)
  {
   t=a[i];
   a[i]=a[j];
   a[j]=t;
  }
 }
 a[left]=a[i];
 a[i]=temp;
 quicksort(left,i-1);
 quicksort(i+1,right);
 }
 int main()
 {
  int i,j,t;
  cout<<"请输入数据个数:";
  cin>>n;
  cout<<"分别输入这几个数:";
  for (i=0;i<n;i++)
  {
   cin>>a[i];
  }
  quicksort(1,n);
  cout<<"排序后结果如下:"<<endl;
  for (i=0;i<n;i++)
  {
   cout<<a[i]<<" ";
  }
  cout<<endl;
  return 0;
}

0 0