分割策略:
#include <stdio.h>
#include <stdlib.h>
void InsertSort(int * src, int n)
{
int i, j;
int tmp;
for (i = 1; i < n; i++)
{
tmp = src[i];
for (j = i; j > 0 && src[j - 1] > tmp; j--)
{
src[j] = src[j - 1];
}
src[j] = tmp;
}
}
void swapArgs(int *pa, int *pb)//交换
{
int tmp;
tmp = *pa;
*pa = *pb;
*pb = tmp;
}
int HoareWay(int * src, int start, int end)
{
int a = start + 1, b = end - 2;
int mid = (start + end) / 2;
if (src[start] > src[mid])
{
swapArgs(src + start, src + mid);
}
if (src[mid] > src[end])
{
swapArgs(src + mid, src + end);
}
if (src[start] > src[mid])
{
swapArgs(src + start, src + mid);
}
if (end - start <= 2)
{
return mid;//冒泡已经排好顺序
}
swapArgs(src + mid, src + end - 1);
while (a <= b)
{
while (a < end - 1 && src[a] <=