剑指offer--快速排序

//思想:实现快速排序的关键是首先在数组中选择一个数字(这里随机选取)作为枢纽元,将枢纽元与数组中最后的元素交换使得枢纽元
//离开要被分割的数据段,将数组中比枢纽元小的元素都移动数组的左边,将数组中比枢纽元大的元素都移动数组的右边
#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!"<start)
	    Quicksort(data,length,start,index-1);
	if(index

参考《数据结构与算法分析》

快速排序的最差时间复杂度为O(n^2);

                    最优时间复杂度为O(nlogn)

                    平均时间复杂度为O(nlogn)

你可能感兴趣的:(剑指offer笔记)