quick.c

来自「解决排序问题」· C语言 代码 · 共 56 行

C
56
字号
#include <stdio.h>
#define MAX 100

int Init(int r[MAX]){
	int i,n;
	for(i=0;i<MAX;i++)
		r[i]=' ';
	printf("请输入有序的序列的长度:\n");
	scanf("%d",&n);
	printf("请按从小到大的顺序输入序列(回车确认):\n");
	for(i=1;i<=n;i++)
		scanf("%d",&r[i]);
	return n;
} 

void quick_sort(int data[MAX], int low, int high){
	int i, j, pivot;
	if (low < high){
		pivot=data[low];
		i=low; 
		j=high;

		while(i<j){
			while (i<j && data[j]>=pivot)
				j--;
				if(i<j)
					data[i++]=data[j]; //将比枢轴记录小的记录移到低端

				while (i<j && data[i]<=pivot)
					i++;
				if(i<j) 
					data[j--]=data[i]; //将比枢轴记录大的记录移到高端
		}

		data[i]=pivot; //枢轴记录移到最终位置

		quick_sort(data,low,i-1);
		quick_sort(data,i+1,high);
	}
}

void Show(int r[MAX],int n){
	int i;
	printf("您输入的数列为:\n");
	for(i=1;i<=n;i++)
		printf("(%d)%d ",i,r[i]);
	printf("\n");
}

void main(){
	int xuli[MAX];
	int n;
	n=Init(xuli);
	quick_sort(xuli,1,n);
	Show(xuli,n);
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?