题目
给定一个数组,编写一个算法找出这个数组中最大的逆序差。逆序差就是i<=j时,a[j]-a[i]的值
c语言实现
#include <stdio.h>
#include <limits.h> // 包含INT_MIN定义 int maxReverseDifference(int arr[], int size) { if (size < 2) { return 0; // 如果数组长度小于2,则不存在逆序差 } int minElement = arr[0]; int maxDiff = INT_MIN; // 初始化最大逆序差为整型最小值 for (int i = 1; i < size; i++) { if (arr[i] < minElement) { minElement = arr[i]; // 更新最小元素 } else { int diff = arr[i] - minElement; if (diff > maxDiff) { maxDiff = diff; // 更新最大逆序差 } } } return maxDiff;
} int main() { int arr[] = {3, 7, 1, 9, 2, 5}; int size = sizeof(arr) / sizeof(arr[0]); int maxDiff = maxReverseDifference(arr, size); printf("Maximum reverse difference is: %d\n", maxDiff); // 输出最大逆序差 return 0;
}