69,394
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.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 *p, int *index)
{
//int i, elem;
int i;
int count = 1, count1 = 1;
int flag = 1; /*数组不存在相同的元素标志*/
*index = 0;
for(i = 0; i < n-1; ) {
while(a[i]==a[i+1]) {
count++;
i++;
flag = 0; /*数组存在相同的元素标志*/
}
if(count > count1) {
count1 = count;
//elem = a[i];
*index = 0;
p[*index] = a[i];
(*index)++;
}
else if(count == count1) {
p[*index] = a[i];
(*index)++;
}
count = 1;
i++;
}
if(flag) {
*index = 0;
for(i = 0; i < n; i++) {
p[*index] = a[i];
(*index)++;
}
}
//return elem;
return 0;
}
int main()
{
int arr[9] = {1,3,3,4,4,6,6,8,8};
int p[9];
int i, index;
for(i = 0; i < 9; i++) {
printf("arr[%d]=%d\n", i, arr[i]);
}
quick_sort(arr, 9, 0, 8);
printf("排序后:\n");
for(i = 0; i < 9; i++) {
printf("arr[%d]=%d\n", i, arr[i]);
}
i = find_max_seq(arr, 9, p, &index);
printf("众数为: \n");
for(i = 0; i < index; i++) {
printf("%4d", p[i]);
}
return 0;
}
#include<stdio.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 *p, int *index)
{
//int i, elem;
int i;
int count = 1, count1 = 1;
*index = 0;
for(i = 0; i < n-1; ) {
while(a[i]==a[i+1]) {
count++;
i++;
}
if(count > count1) {
count1 = count;
//elem = a[i];
*index = 0;
p[*index] = a[i];
}
else if(count == count1) {
(*index)++;
p[*index] = a[i];
}
count = 1;
i++;
}
//return elem;
return 0;
}
int main()
{
int arr[9] = {2,1,2,2,3,3,3,4,4};
int p[9];
int i, index;
for(i = 0; i < 9; i++) {
printf("arr[%d]=%d\n", i, arr[i]);
}
quick_sort(arr, 9, 0, 8);
printf("排序后:\n");
for(i = 0; i < 9; i++) {
printf("arr[%d]=%d\n", i, arr[i]);
}
i = find_max_seq(arr, 9, p, &index);
printf("众数为: \n");
for(i = 0; i <= index; i++) {
printf("%4d", p[i]);
}
return 0;
}
#include<stdio.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[9] = {2,1,2,2,3,3,3,4,3};
int i;
for(i = 0; i < 9; i++) {
printf("arr[%d]=%d\n", i, arr[i]);
}
quick_sort(arr, 9, 0, 8);
printf("排序后:\n");
for(i = 0; i < 9; i++) {
printf("arr[%d]=%d\n", i, arr[i]);
}
i = find_max_seq(arr, 9);
printf("众数为: %d\n", i);
return 0;
}