快速排序(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;
}

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