0
点赞
收藏
分享

微信扫一扫

蓝桥真题 2016_4_快速排序

_karen 2022-03-30 阅读 24

2016_4_快速排序

【难度:中等】
【考点:快速排序】

题目

C++代码

#include <stdio.h>
void swap(int a[], int i, int j)
{
	int t = a[i];
	a[i] = a[j];
	a[j] = t;
}
int partition(int a[], int p, int r)
{
	int i = p;
	int j = r + 1;
	int x = a[p];
	while(1)
	{
		while(i<r && a[++i]<x);
		while(a[--j]>x);
		if(i>=j) break;
		swap(a,i,j);
	}
	//______________________;//填空
	swap(a,p,j);
	return j;
}
void quicksort(int a[], int p, int r)
{
	if(p<r)
	{
		int q = partition(a,p,r);
		quicksort(a,p,q-1);
		quicksort(a,q+1,r);
	}
}

int main()
{
	int i;
	int a[] = {5,13,6,24,2,8,19,27,6,12,1,17};
	int N = 12;
	quicksort(a, 0, N-1);
	for(i=0; i<N; i++) 
		printf("%d ", a[i]);
	printf("\n");
	return 0;
}



运行结果

举报

相关推荐

0 条评论