标签:http ar io os sp for 数据 art bs
快速排序的思想:
通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
主要思路:
先从后面开始遍历找到比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;
}
标签:http ar io os sp for 数据 art bs
原文地址:http://blog.csdn.net/djb100316878/article/details/41960937