将一个数组中的值按逆序存放。例如:原来的顺序为:2,6,4,1,7。要求改为:7,1,4,6,2。C语言
时间: 2024-03-11 10:49:04 浏览: 74
可以使用两个指针,分别指向数组的首尾元素,然后交换它们的值,依次向中间靠近即可实现数组值的逆序存放。以下是示例代码:
```c
#include <stdio.h>
#define N 5
int main() {
int a[N] = {2, 6, 4, 1, 7};
int i, temp;
// 反转数组
for (i = 0; i < N / 2; i++) {
temp = a[i];
a[i] = a[N - i - 1];
a[N - i - 1] = temp;
}
// 输出结果
for (i = 0; i < N; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
```
输出结果为:
```
7 1 4 6 2
```
相关问题
将一个数组的值按逆序重新存放于原数组中,并输出。例如:原来顺序为3,6,5,4,9 要求改为 9,4,5,6,3
可以使用双指针的方法,从数组的两端开始交换元素,直到两个指针相遇为止。具体步骤如下:
1. 定义两个指针,一个指向数组的第一个元素,另一个指向数组的最后一个元素。
2. 循环交换两个指针所指向的元素,直到两个指针相遇为止。
3. 输出交换后的数组。
代码如下:
```python
arr = [3, 6, 5, 4, 9]
left, right = 0, len(arr) - 1
while left < right:
arr[left], arr[right] = arr[right], arr[left]
left += 1
right -= 1
print(arr)
```
输出结果为:[9, 4, 5, 6, 3]
1.逆序存放。 将一个数组中的值按逆序存放。例如:原来的顺序为:2,6,4,1,7。要求改为:7,1,4,6,2。 2.找位置。 已有一个排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中。写代码
1. **逆序存放**
若要将数组元素逆序存放,你可以使用双指针的方法,从两端开始遍历并交换元素。以下是一个简单的C语言示例:
```c
#include <stdio.h>
void reverse(int arr[], int n) {
if (n <= 1) return; // 如果只有一个或没有元素,无需操作
int start = 0;
int end = n - 1;
while (start < end) {
// 交换arr[start]和arr[end]
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
// 移动指针
start++;
end--;
}
}
int main() {
int arr[] = {2, 6, 4, 1, 7};
int n = sizeof(arr) / sizeof(arr[0]);
printf("Original array: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
reverse(arr, n);
printf("\nReversed array: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
运行这段代码后,输出将是逆序后的数组。
2. **找位置插入(二分查找法)**
对于已经排序的数组,如果要快速找到新元素应插入的位置,可以使用二分查找法。以下是一个基于递归的二分查找插入点的例子:
```c
#include <stdio.h>
// 二分查找函数
int binary_search(int arr[], int low, int high, int key) {
if (high >= low) {
int mid = low + (high - low) / 2;
// 如果key大于中间元素,移动到右半部分
if (arr[mid] < key)
return binary_search(arr, mid + 1, high, key);
// 如果key小于中间元素,移动到左半部分
else if (arr[mid] > key)
return binary_search(arr, low, mid - 1, key);
// 找到了正确位置,返回mid
else
return mid;
}
// 如果未找到,返回最高元素的位置以便插入
return high;
}
// 插入函数
void insert_sorted_array(int arr[], int size, int new_key) {
int index = binary_search(arr, 0, size - 1, new_key);
// 将新元素放入数组
for (int i = size; i > index; i--) {
arr[i] = arr[i - 1];
}
arr[index] = new_key;
}
int main() {
int arr[] = {1, 2, 4, 6, 7};
int n = sizeof(arr) / sizeof(arr[0]);
int new_key = 5;
printf("Original array: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
insert_sorted_array(arr, n, new_key);
printf("\nArray after insertion: ");
for (int i = 0; i <= n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
当你运行这个程序时,会在适当的位置插入新的元素,保持数组有序。
阅读全文
相关推荐














