快速排序(c語言實現)

快速排序(c語言實現)

分治思想:通過一趟排序將待排序記錄分割成獨立的兩部分,其中一部分記錄的關鍵詞均比另一部分記錄的關鍵詞小,則可分別對兩部分記錄繼續進行排序,以達到目的。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#define MAX 100

/* 	QuickSort	 */
int a[MAX];
void QuickSort(int start,int end){
		int i,j,t,temp;
		if(start>end)	return;
		
		temp = a[start];
		i = start;
		j = end;
		while(i!=j){
				while(a[j]>=temp&&j>i)	j--;
				while(a[i]<=temp&&j>i)	i++;
				if(i<j){
						t = a[i];
						a[i] = a[j];
						a[j] = t;
				}	
		}
		a[start] = a[i];
		a[i] = temp;
		
		QuickSort(start,i-1);
		QuickSort(i+1,end);
		
}

int main(int argc, char *argv[]) {
		int i,large;
		srand((int)time(NULL));
		printf("請輸入規模:");
		scanf("%d",&large);
		printf("請依次輸入這%d個數",large);
		large = large + 1;
		for(i=1;i<large;i++)	scanf("%d",&a[i]);
		for(i=1;i<large;i++)	printf("%5d",a[i]);
		
		printf("\n進行QuickSort:\n");
		QuickSort(1,large-1);
		for(i=1;i<large;i++)	printf("%5d",a[i]);
		return 0;
}

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