用数组实现快速排序(C++)

本文详细介绍了快速排序算法的原理及其实现过程。通过分而治之的方法,将数组分为左右两部分,并确保左边的元素不大于中间元素,右边的元素不小于中间元素。随后递归地对左右两边进行排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

快速排序是分而治之法的一种排序方法,快速排序将n个元素分为三段。left段,right段和middle段,中间仅有一个元素。我叫做关键值。左边的元素都不大于中间段,右边的元素都不小于中间段。因此可以对left与right段进行单独的排序。
完整代码实现如下:

#include<iostream>  
using namespace std;
void quickSort(int array[],int X,int Y) //X,Y分别是数组的起始下标
{
    int z,y,i,k;
    if(X<Y)
    {
        z=X;
        y=Y;
        k=array[z];  //关键值
        do{
            while((z<y)&&(array[y]>=k))
             y--;
            if(z<y)               //右边的元素小于k,移到k的左边。
            {
                array[z]=array[y];
                z++;
            }
            while((z<y)&&array[z]<=k)
                z++;
            if(z<y)  //左边的值小于k,移到看k的右边
            {
                array[y]=array[z];
            }

        }while(z!=y);
          array[z]=k;//复制key值到array[z] 
        quickSort(array,X,z-1);//对z的左侧进行排序
            quickSort(array,z+1,Y);//对z的右侧进行排序
    }
}
int main()
{
    int a[11], i;
    // char tmp[20];
  for (i = 0; i<11; i++) 
   cin>>a[i];
  quickSort(a, 0, 10); 
  for (i = 0; i<11; i++)
   cout<<"输出数组元素"<<a[i]<<endl;
  system("pause");
     return 0;
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值