归并排序 快速排序

归并排序

#include
#include

static void merge(int arr[],int tmpArr[],int lpos,int rpos,int rend){
	
	int lend,start,num,i;
	lend=rpos-1;
	start=lpos;
	num=rend-lpos+1;
	
	while(lpos<=lend && rpos<=rend){
		if(arr[lpos]

快速排序

#include
#include

#define cutoff 3

void printArray(int arr[],int N){
	int i;
	for(i=0;i0 && tmp arr[center])
	  swap(&arr[left],&arr[center]);
	if(arr[left]>arr[right])
	  swap(&arr[left],&arr[right]);
	if(arr[center]>arr[right])
	  swap(&arr[center],&arr[right]); 
	swap(&arr[center],&arr[right-1]) ;
	return arr[right-1];
}


void qSort(int arr[],int left,int right){
	int i,j;
	
	if(left+cutoff<=right){
		int pivot=median(arr,left,right);
		i=left;j=right-1;
		for(; ; ){
			while(pivot>arr[++i]) {}
			while(pivot


你可能感兴趣的:(数据结构与算法分析,c语言)