快速排序

原创 2015年07月09日 22:43:51

快速排序的思想史基于分治的,其是递归的,需要 借助一个递归栈来保存每一层递归调用的必要信息,所以其空间复杂度为O(log2n),时间复杂度为O(nlog2n),快速排序是所有内部排序算法中平均性能最优的排序算法


#include<iostream>
#include<ctime>
using namespace std;
int RandomInRange(int start,int end)
{
	srand(time(NULL));
	return start+rand()%(end-start+1);
}
int Partition(int *data,int len,int start,int end)
{
	if(data==NULL||start<0||end>=len||len<=0)
		return -1;
	int index=RandomInRange(start,end);
	swap(data[index],data[end]);
	int small=start-1;
	for(index=start;index<end;index++)
	{
		if(data[index]<data[end])
		{
			small++;
			if(small!=index)
				swap(data[small],data[index]);
		}
	}
	++small;
	swap(data[small],data[end]);
	return small;
}
void QuickSort(int data[],int len,int start,int end)
{
	if(start==end)
		return;
	int index=Partition(data,len,start,end);
	if(index>start)
		QuickSort(data,len,start,index-1);
	if(index<end)
		QuickSort(data,len,index+1,end);
}

void main()
{
	int data[]={49,38,65,97,76,13,27,49,55,4};
	int len=sizeof(data)/sizeof(int);
	QuickSort(data,len,0,len-1);
	for(int i=0;i<len;i++)
		cout<<data[i]<<" ";
	cout<<endl;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

快速排序代码

  • 2016年06月14日 14:08
  • 2KB
  • 下载

简单的快速排序

  • 2015年01月23日 09:57
  • 479B
  • 下载

第15周项目1(4)- 验证快速排序算法

1.以第1个元素作为基准#include #define MaxSize 20 typedef int KeyType; //定义关键字类型 typedef char InfoType[10]...

快速排序算法

  • 2015年05月01日 16:41
  • 1KB
  • 下载

C#快速排序练习

  • 2017年06月20日 11:40
  • 30KB
  • 下载

java实现冒泡、选择、快速排序算法

冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列...

快速排序原创数据(20组)

  • 2015年10月30日 21:48
  • 7.57MB
  • 下载

快速排序(quicksort)

IT公司招人,无论笔试还是面试,快排基本上都会问到。通常情况下,快排实现有两个函数: void quickSort(int arr[], int left, int right); int parti...

冒泡归并和快速排序java源码

  • 2016年05月11日 20:30
  • 2KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:快速排序
举报原因:
原因补充:

(最多只允许输入30个字)