Nice to meet you

快速排序

快速排序是把中值排序的中值改为随机值

#include<iostream>
#include<time.h>
using namespace std;

void swap(int *a,int *b){
	int temp = *a;
	*a = *b;
	*b = temp;
}

int compare(int a, int b){
	if(a > b) return 1;
	else if(a == b) return 0;
	else return -1;
}

void quickSort(int arr[],int left,int right){
	if(left >= right){
		return;
	}
	
	int index = (rand()%(right - left) + 1) + left;
	
	int i = left,temp_r = right - 1;
	while( i <= temp_r){
		if(compare(arr[i],arr[index]) >= 0){
			swap(&arr[i],&arr[temp_r]);
			temp_r--;
		}else{
			i++;
		}
	}
	
	swap(&arr[i],&arr[index]);
	index = i;
	
	quickSort(arr,left,index - 1);
	quickSort(arr,index + 1,right);
}


int main(){
	int len;
	cin>>len;
	int arr[len];
	for(int i = 0; i < len;++i){
		cin>>arr[i];
	}
	
	quickSort(arr,0,len-1);
	for(int i = 0; i < len; ++i){
		cout<<arr[i]<<",";
	}
	cout<<endl;
	return 0;
}



posted @ 2022-07-21 16:31  魏标  阅读(19)  评论(0)    收藏  举报