c语言用简单函数求逆序数
时间: 2024-10-21 19:08:26 浏览: 21
C语言实现单链表逆序与逆序输出实例
在 C 语言中,计算一个整数数组的逆序数(即大于前一个元素的元素对的数量)可以使用双指针法,从数组两端向中间遍历并计数。这里是一个简单的示例:
```c
#include <stdio.h>
int count_inversions(int arr[], int n) {
int inv_count = 0; // 初始化逆序数为0
for (int i = 0; i < n - 1; i++) { // 遍历数组
for (int j = i + 1; j < n; j++) { // 双指针,左指针i,右指针j
if (arr[i] > arr[j]) { // 如果当前元素大于下一个元素
inv_count++; // 逆序数加1
}
}
}
return inv_count;
}
int main() {
int arr[] = {9, 8, 7, 6, 5, 4, 3, 2, 1};
int n = sizeof(arr) / sizeof(arr[0]);
printf("The number of inversions in the array is: %d\n", count_inversions(arr, n));
return 0;
}
```
在这个例子中,`count_inversions` 函数接收一个整数数组和它的长度,通过嵌套循环逐一对比元素,如果发现逆序情况就增加逆序数。在 `main` 函数中,我们提供了一个测试数组并打印出逆序数。
阅读全文