user-0 提问: 代码没有错误，为什么就是运行不出来啊？？？

回复:
user: user-1
content: 引用 4 楼 珰珰珰 的回复:谢谢，但我的目的是输出每一趟排序后的结果 那就把  注释掉 你原先的输出语句的注释符号去掉就好了呀。 上面不是没给你删除，只是注释掉了而已么？ ～

user: user-0
content: 引用 2 楼 拥抱Linux 的回复:简单改了一下，具体说明见注释，  #include <stdio.h>  #define MAXL 100 //定义表中最多记录个数  typedef int KeyType; typedef char InfoType[10]; typedef struct { 	KeyType key; //KeyType为关键字的数据类型 	InfoType data; //其他数据 } RecType; typedef RecType SeqList[MAXL]; //顺序表类型  int partition(RecType R[], int s, int t) { 	int i = s, j = t; 	RecType tmp = R[i]; 	while (i < j) {                 // 原来的代码，while圆括号后面多了一个分号 		while (j > i && R[j].key >= tmp.key) { 			j--; 		} 		R[i] = R[j];                 // 原来的代码，while圆括号后面多了一个分号 		while (i < j && R[i].key <= tmp.key) { 			i++; 		} 		R[j] = R[i]; 	} 	R[i] = tmp; 	return i; }  void QuickSort(RecType R[], int s, int t) { 	int i, n; 	if (s < t) {                 // 原来的代码，partrtion赋值给了变量i，可是后面又多出来了一个for循环使用了变量i                 // 等于这个partition的赋值就没有起作用了 		n = partition(R, s, t); 		/* 		for (i = 0; i < t + 1; i++) { 			printf("%d ", R[i].key); 		} 		printf("\n");                 */                 // 下面两行语句需要使用前面的partition的返回值 		QuickSort(R, s, n - 1); 		QuickSort(R, n + 1, t); 	} }  int main(void) { 	SeqList R; 	int a[] = { 6, 8, 7, 9, 0, 1, 3, 2, 4, 5 }, i, n = 10; 	for (i = 0; i < n; i++) //建立顺序表 		R[i].key = a[i]; 	printf("序列:"); 	for (i = 0; i < n; i++) 		printf("%d ", R[i].key); 	printf("\n"); 	printf("使用快速排序算法\n"); 	QuickSort(R, 0, 9);          // 打印最终排序后的结果 	for (int k = 0; k < n; k++) { 		printf("%d ", R[k].key); 	}  	return 0; }  ～  谢谢，但我的目的是输出每一趟排序后的结果

user: user-2
content: 另外你在函数递归的时候是不是一直在掉自己执行，什么时候程序结束也就是说什么时候递归才停止，并没有判断，

user: user-1
content: 简单改了一下，具体说明见注释，  #include <stdio.h>  #define MAXL 100 //定义表中最多记录个数  typedef int KeyType; typedef char InfoType[10]; typedef struct { 	KeyType key; //KeyType为关键字的数据类型 	InfoType data; //其他数据 } RecType; typedef RecType SeqList[MAXL]; //顺序表类型  int partition(RecType R[], int s, int t) { 	int i = s, j = t; 	RecType tmp = R[i]; 	while (i < j) {                 // 原来的代码，while圆括号后面多了一个分号 		while (j > i && R[j].key >= tmp.key) { 			j--; 		} 		R[i] = R[j];                 // 原来的代码，while圆括号后面多了一个分号 		while (i < j && R[i].key <= tmp.key) { 			i++; 		} 		R[j] = R[i]; 	} 	R[i] = tmp; 	return i; }  void QuickSort(RecType R[], int s, int t) { 	int i, n; 	if (s < t) {                 // 原来的代码，partrtion赋值给了变量i，可是后面又多出来了一个for循环使用了变量i                 // 等于这个partition的赋值就没有起作用了 		n = partition(R, s, t); 		/* 		for (i = 0; i < t + 1; i++) { 			printf("%d ", R[i].key); 		} 		printf("\n");                 */                 // 下面两行语句需要使用前面的partition的返回值 		QuickSort(R, s, n - 1); 		QuickSort(R, n + 1, t); 	} }  int main(void) { 	SeqList R; 	int a[] = { 6, 8, 7, 9, 0, 1, 3, 2, 4, 5 }, i, n = 10; 	for (i = 0; i < n; i++) //建立顺序表 		R[i].key = a[i]; 	printf("序列:"); 	for (i = 0; i < n; i++) 		printf("%d ", R[i].key); 	printf("\n"); 	printf("使用快速排序算法\n"); 	QuickSort(R, 0, 9);          // 打印最终排序后的结果 	for (int k = 0; k < n; k++) { 		printf("%d ", R[k].key); 	}  	return 0; }  ～

user: user-2
content: partition函数中的这段代码                 while((j>i) && (R[j].key>=tmp.key));                 j--;                 R[i]=R[j];                 while((i<j )&& (R[i].key <= tmp.key));                 i++;                 R[j]=R[i]; 进入了第二个while的死循环。