快速排序实践

最近想把一些基本的常用算法彻底弄懂,先从快速排序开刀吧奋斗

这段代码是在http://www.cnblogs.com/morewindows/archive/2011/08/13/2137415.html基础上进行重构而成的

#include <iostream>
using namespace std;
void quick_sort(int arr[], int left, int right);
void main()
{
	int aa[50] ={5,23,12,143,80,69,8,12,32,619,
				 15,23,312,413,30,26,8,212,72,119,
				 59,36,122,3,17,86,18,32,62,29,
				 25,29,1,243,40,6,118,52,11,19,
				 35,13,92,432,18,36,84,112,23,39,};
	quick_sort(aa,0,49);
	for(int i = 0 ; i<50; i++)
	{
		cout<<aa[i]<<endl;
	}
	while(1);
}

//快速排序
void quick_sort(int arr[], int left, int right)
{

    if (left < right)
    {
        int le = left, ri = right, x = arr[left];

        while(le < ri)
        {
	 		// 从右向左找第一个小于x的数
            while(le < ri && arr[ri] >= x) 
            ri--;  

            if(le < ri) 
            arr[le++] = arr[ri];

	 		// 从左向右找第一个大于等于x的数
            while(le < ri && arr[le] < x) 
            le++;  

            if(le < ri) 
            arr[ri--] = arr[le];
        }
        arr[le] = x;
		// 递归调用 
        quick_sort(arr, left, le - 1); 
        quick_sort(arr, le + 1, right);
    }

}


 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值