一直有长度为n的有序线性表,设计一个算法,使得该线性表中的数据元素按照逆序进行排 C语言代码
时间: 2024-09-26 13:16:25 浏览: 7
在C语言中,如果你想对一个已经排序的线性表进行逆序排列,可以采用简单的双指针法,即使用两个指针i从头开始,j从尾开始,交换它们指向的元素然后向中间移动,直到两者相遇。以下是这个算法的一个简单实现:
```c
#include <stdio.h>
void reverse_sorted_list(int arr[], int n) {
if (n <= 1) return; // 如果数组只有一个元素或为空,无需反转
int i = 0, j = n - 1; // 初始化两个指针
while (i < j) { // 当前指针未越过另一个指针
// 交换arr[i]和arr[j]
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
// 移动指针
i++;
j--;
}
}
// 测试函数
int main() {
int arr[] = {1, 2, 3, 4, 5}; // 示例数组
int n = sizeof(arr) / sizeof(arr[0]);
printf("原顺序列表: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
reverse_sorted_list(arr, n);
printf("\n逆序列表: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
当你运行这个程序,输入的已排序数组会变成逆序。