REF:https://bbs.csdn.net/topics/330219507
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
/*快速排序*/
int quick_sort(int *a, int n, int left, int right) {
int s, i, j;
int temp;
if (left < right) {
s = a[left];
i = left;
j = right + 1;
while (1) {
while (i + 1 < n && a[++i] > s);
while (j - 1 > -1 && a[--j] < s);
if (i >= j) {
break;
}
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
a[left] = a[j];
a[j] = s;
quick_sort(a, n, left, j - 1);
quick_sort(a, n, j + 1, right);
}
return 0;
}
/*在有序数组中查找出现最多的元素*/
int find_max_seq(int *a, int n) {
int i, elem;
int count = 1, count1 = 1;
for (i = 0; i < n - 1;) {
while (a[i] == a[i + 1]) {
count++;
i++;
}
if (count > count1) {
count1 = count;
elem = a[i];
}
count = 1;
i++;
}
return elem;
}
int main() {
int arr[12] = {1, 2, 3, 4, 3, 2, 1, 23, 32, 1, 534, 231};
int i;
int NN =12;//一共多少个元素
for (i = 0; i < NN; i++) {
printf("arr[%d]=%d\n", i, arr[i]);
}
quick_sort(arr, NN, 0, NN-1);
printf("排序后:\n");
for (i = 0; i < NN; i++) {
printf("arr[%d]=%d\n", i, arr[i]);
}
i = find_max_seq(arr, NN);
printf("众数为: %d\n", i);
return 0;
}