【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]);//輸出結果 
	}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章