第6周笔记11-快速排序(int)

快速排序

/*
快速排序 
*/
#include<stdio.h>
#define N 100
int arr[N];

void quick_sort(int a[],int lower,int higher){
	if(lower>=higher)  return;
	//1建立枢纽,快排使枢纽左右有序
	int i=lower,j=higher;
	int key=a[i];
	while(i<j){
		while(a[j]>=key&&i<j)  j--; a[i]=a[j]; 
		while(a[i]<=key&&i<j)  i++; a[j]=a[i];	
	}
	a[i]=key;	
	//2递归排枢纽左
	quick_sort(a,lower,i-1);
	//3递归排枢纽右
	quick_sort(a,i+1,higher);
} 

int main(){
	int n,i;
	scanf("%d",&n);
	for(i=0;i<n;i++)
		scanf("%d",&arr[i]);
	quick_sort(arr,0,n-1);
	
	for(i=0;i<n;i++)
		printf("%d  ",arr[i]);	
	return 0;
}
发布了152 篇原创文章 · 获赞 53 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/weixin_41297324/article/details/102602691