快速排序

#include <iostream>
using namespace std;

//快速排序算法实现
//挖坑+分治法
void quick_sort(int v[] ,int left,int right)
{
    //int x = v[left];
    if (left < right)
    {
        int  i = left, j = right, x =  v[left];
        while (i < j )
        {
            while ( i <j && v[j] >= x )//先从后往前找比x小的数
            {
                j--;
            }
            if ( i < j ) //找到,填充前面那个坑
            {
                v[i++] = v[j];
            }

            //从前向后找第一个大于等于x的数
            while (i < j  && v[i] < x)
            {
                i++;
            }

            if (i < j )
            {
                v[j--] = v[i];
            }
        }
        v[i] = x;//得到调整后基准数的位置i

        //递归调用
        quick_sort(v,left,i-1);
        quick_sort(v,i+1,right);
    }
}


void main()
{
    int v[] = {2,1,5,7,4,2,98,54,52,654,23,43,25};
    quick_sort(v,0,12);

    for (int i = 0 ; i < 13;i++)
    {
        cout<<v[i]<<"  ";
    }
    cout<<endl;
}

 

 

 

posted @ 2013-09-17 14:50  Big.Eagle  阅读(160)  评论(0编辑  收藏  举报