快速排序算法

快速排序算法的主要思想(从小到大排序):首先设置一个基准数,以这个基准数为标准,先从右往左,找到比基准数小的数,然后从左往右,找到比基准数大的数,找到了然后就交换两个数,直到往右往左时重逢。比较重逢的数,如果比基准数小,就交换基准数,重新设置基准数,重逢以上步骤。以下为一个典型的例子:
#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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值