剑指Offer——快速排序

主要思路:分治法,挑选出来一个中间数,将大于中间数和小于中间数的分成两组,然后组内排序,递归处理


以下代码在vs2015中调试运行无误


#include "stdafx.h"
#include
using namespace std;
#include
int RandomInRange(int start, int end)
{
	if (end>start)
	{
		srand(time(NULL));
		return start + rand() % ((end - start));//产生start~end之间的随机数
	}
}
void swap_element(int *a, int *b)
{
	int temp;
	temp = *a;
	*a = *b;
	*b = temp;
}

int Partition(int data[], int length, int start, int end)
{
	if (data == NULL || length <= 0 || start<0 || end >= length)
	{
		cout << "error1!" << endl;
		exit(0);
	}
	int index = RandomInRange(start, end);
	swap_element(&data[index], &data[end]);
	int small = start - 1;
	for (index = start; indexstart)
		Quicksort(data, length, start, index - 1);
	if (index


你可能感兴趣的:(算法)