今天终于搞定了快速排序算法,汗。。。
a:3 8 7 1 2 5 6 4 //以第一个元素为主元
2 8 7 1 5 6 4
b:2 7 1 8 5 6 4
c:2 1 7 8 5 6 4
d:2 1 7 8 5 6 4
e:2 1 3 7 8 5 6 4 //最后补上,关键字3
// QuickSort2.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
int Divition(int a[],int left,int right)
{
int base;
base = a[left];
while (left<right)
{
while(left<right && a[right]>base)
{
--right;
}
a[left]=a[right];
while(left<right && a[left]<base)
{
++left;
}
a[right]=a[left];
}
a[left]=base;
return left;
}
void QucikSort(int a[],int left,int right)
{
int i=0;
//if 进行一次逻辑判断,根据判断逻辑结果决定是否操作;
//while 进行一系列循环操作,可能执行 N 次 ...
if(left<right)//注意此处不能用while
{
i=Divition(a,left,right);
QucikSort(a,left,i-1);
QucikSort(a,i+1,right);
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int a[]={2,1,4,3,6};
QucikSort(a,0,4);
for (int i=0;i<5;i++)
{
printf("%3d ",a[i]);
}
system("pause"); return 0;
}