【Aha】算法篇之排序(下)

  • 最常用的排序------快速排序
  • 三种排序方式比较
  1. (1)桶排序:占用空间大,但最快O(M+N)
  2. (2)冒泡排序:最慢O(N^2)
  3. (3)快速排序:比较优O(NlogN)
#include<stdio.h>
int a[101],n;//定义全局变量 
void quicksort(int left,int right)
{
	int i,j,t,temp;
	if(left>right){
		return;
	}
	temp=a[left];//temp存的是基准数 
	i=left;
	j=right;
	while(i!=j){
		while(a[j]>=temp&&i<j){//顺序很重要,先从右往左找 
			j--;
		}
		while(a[i]<=temp&&i<j){//如何再从左往右找 
			i++;
		}
		if(i<j){//交换位置 
			t=a[i];
			a[i]=a[j];
			a[j]=t;
		}
	}
	a[left]=a[i];
	a[i]=temp;//基准数归位 
	quicksort(left,i-1);//继续处理左边,递归 
	quicksort(i+1,right);//继续处理右边,递归 
	return;
}
int main()
{
	int i,j;
	scanf("%d",&n);
	for(i=1;i<=n;i++){
		scanf("%d",&a[i]);//读入数据 
	}
	quicksort(1,n);
	for(i=1;i<=n;i++){
		printf("%d ", a[i]);//输出结果 
	}
}

猜你喜欢

转载自blog.csdn.net/qq_42735631/article/details/81317985
今日推荐