码迷,mamicode.com
首页 > 编程语言 > 详细

C++算法之 快速排序

时间:2014-12-16 09:52:59      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   ar   io   color   os   sp   for   

 

快速排序的思想:

 

通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

 

主要思路:

 

先从后面开始遍历找到比key值小的一个值,把这个值放到key的前面,再从前面开始遍历找比key大的值;

 

代码如下:

bubuko.com,布布扣
// QuickSort.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
using namespace std;


void QuickSort(int a[], int start,int end)
{
    if (start > end)
    {
        return;
    }

    int i = start;
    int j = end;
    int k = a[i];
    while (i < j)
    {
        while (i < j && a[j] > k)//先从后面开始找小于k的值
                    j--;
        a[i] = a[j];//找到小于k的值,替换a[i]
        while (i < j && a[i] < k)//从前面找大于k的值
                    i++;
        a[j] = a[i];//找到大于k的值,刚才a[j]的值已经赋刚才的a[i];a[j]的值用现在找到的大于k的值填充
    }
    a[j] = k;//最后i = j; 把k的值赋给a[i];

    QuickSort(a,i+1,end);
    QuickSort(a,start,i-1);

}


int _tmain(int argc, _TCHAR* argv[])
{
    int a[] = {1,3,5,7,9,2,4,6,8,0};
    int len=sizeof(a)/sizeof(a[0])-1;
    for(int i=0;i<=len;i++)
    {        
        cout<<a[i]<<" "; 

    } 
    cout<<endl;
    cout<<"快速排序后:"<<endl;
    len=sizeof(a)/sizeof(a[0])-1;
    QuickSort(a,0,len);
    for(int i=0;i <= len;i++)
    {        
        cout<<a[i]<<" ";  
    } 

    getchar();
    return 0;
}
View Code

 

C++算法之 快速排序

标签:style   blog   http   ar   io   color   os   sp   for   

原文地址:http://www.cnblogs.com/myxiaoxiao/p/4166418.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!