首页 > 代码库 > C++算法之 快速排序

C++算法之 快速排序

 

快速排序的思想:

 

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

 

主要思路:

 

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

 

代码如下:

// 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++算法之 快速排序