编写一个算法实现找出n个整数类型数据的顺序表中的最大数和最小数,然后将最大数放到最小数后面。如:原顺序表为:12,6,4,20,14,7,9,36,10,15,调整后顺序表为:12,6,4,36,20,14,7,9, 10,15。
#include<stdio.h>
int findmax(int* arg, int n) {
int count = 0;
int* p = arg;
int temp = p[0];
for (int i = 0;i < n;i++) {
if (temp < p[i]) {
temp = p[i];
count = i;
}
}
printf("the max number is: %d\n", temp);
return count;
}
int findmin(int* arg, int n) {
int count = 0;
int* p = arg;
int temp = p[0];
for (int i = 0;i < n;i++) {
if (temp > p[i]) {
temp = p[i];
count = i;
}
}
printf("the min number is: %d\n", temp);
return count;
}
int* print_num(int max, int min, int* arg, int n) {
int temp[1000];
if (max < min) {
temp[0] = arg[max];
for (int i = max;i < min;i++) {
arg[i] = arg[i + 1];
}
arg[min] = temp[0];
}
if (min<max) {
for (int i = min + 1, j = 0;min + j <n;i++, j++) {
if (i == max)
i++;
temp[j] = arg[i];
}
arg[min + 1] = arg[max];
for (int i = min + 2, j = 0;min + j < n;i++, j++) {
arg[i] = temp[j];
}
}
return arg;
}
int main() {
int n;
int max, min;
int* q;
printf("input exactness of n(1~1000):\n");
scanf_s("%d", &n);
int a[1000];
printf("input %d number\n", n);
for (int i = 0;i < n;i++) {
scanf_s("%d", &a[i]);
}
max = findmax(a, n);
min = findmin(a, n);
q = print_num(max, min, a, n);
printf("new array is:\n");
for (int i = 0;i < n;i++) {
printf("%d ", q[i]);
}
return 0;
}
5815



被折叠的 条评论
为什么被折叠?



