要怎么找到最大值及最小值且找到他们的下标删除他们。在进行接下来的运算?
求代码
#include<stdio.h>
int main(){
int list[10] = { 1,3,5,4,2,0,8,9,6,7 }; //以十个空间的数组为例
int length = 10;
int max = list[0]; //从第一个数开始找最大值
int max_index = 0; //记录最大值的下标
for (int i = 0; i < length; i++) {
if (list[i] > max) { //与最大值比较,大于就更新max
max = list[i];
max_index = i;
}
}
//这不是链表,无法直接删除这个位置,只能把它后面的数据往前移动进行覆盖,数组长度减1
for (int i = max_index; i < length - 1; i++)
list[i] = list[i + 1];
length--;
for (int i = 0; i < length; i++)
printf("%d ", list[i]);
return 0;
}
一个循环就可以,只要遍历1次,算法复杂度O(N)。
int _tmain(int argc, _TCHAR* argv[])
{
int N = 7;
int nums[] = {3,2,42,6,35,76,11};
int max = nums[N-1] > nums[N-2] ? nums[N-1] : nums[N-2];
int min = nums[N-1] < nums[N-2] ? nums[N-1] : nums[N-2];
nums[N - 1] = nums[N - 2] = 0;
for (int i = 0; i < N - 2; i++)
{
int t;
if (nums[i] > max) {t = max; max = nums[i]; nums[i] = t;}
if (nums[i] < min) {t = min; min = nums[i]; nums[i] = t;}
}
for (int i = 0; i < N - 2; i++) printf("%d ", nums[i]);
return 0;
}
如果问题得到解决,麻烦点下我回答右边的采纳