快排,不知道为什么调试有问题,急急急
查看原帖
快排,不知道为什么调试有问题,急急急
866969
telankesi楼主2022/11/30 09:41
#include <stdio.h>
#include  <time.h>
#include <string.h>

typedef struct People {
	char n[100];
	int num;
}peo;
void  sort(int left, int right, peo p[100]);
int main() {
	int m;
	scanf("%d", &m);
	peo p[100];

	for (int i = 1; i <= m; i++) {
		scanf("%s", &(p[i].n));
		p[i].num = i;
	}

	sort(1, m, p);
	printf("%d\n%s", p[m].num, p[m].n);
	return 0;
}
void  sort(int left, int right, peo p[100]) {
	srand((unsigned)time(NULL));
	int t = rand() % (right - left + 1) + left;
	int i = left, j = right;
	peo temp = p[t];
	p[t] = p[left];
	p[left] = temp;
	if (left >= right) return;
	while (left != right) {
		while (strcmp(p[right].n, temp.n) >= 0 && right > left) right--;
		while (strcmp(p[left].n, temp.n) <= 0 && left < right)left++;
		if (right > left) {
			peo k = p[left];
			p[left] = p[right];
			p[right] = k;
		}
	}
	p[i] = p[left];
	p[left] = temp;

	sort(i, left - 1, p);
	sort(left + 1, j, p);
}

2022/11/30 09:41
加载中...