c语言把一个数组中的负数放在数组的前面
时间: 2023-10-24 22:03:19 浏览: 220
实现将一个数组中的负数放在数组的前面,可以使用C语言的双指针法来完成。
首先,定义两个指针,一个指向数组的头部(命名为head),一个指向数组的尾部(命名为tail)。
然后,使用while循环,不断地移动指针head,直到找到第一个负数元素为止。
接下来,使用while循环,不断地移动指针tail,直到找到第一个正数元素为止。
在每一次循环开始之前,需要判断head和tail指针是否相遇。如果相遇,则说明数组中负数已经全部放在了前面,退出循环。
如果head指针指向的元素大于0,而tail指针指向的元素小于0,说明head和tail指针所指向的数需要交换。交换之后,head指针向右移动一个位置,tail指针向左移动一个位置。
重复以上步骤,直到head和tail指针相遇。
最后,数组中的负数都被放在了数组的前面。
以下是具体实现的C代码:
```c
#include <stdio.h>
void rearrangeNegative(int arr[], int size) {
int head = 0; // 头指针
int tail = size - 1; // 尾指针
while (head < tail) {
while (arr[head] < 0) {
head++;
}
while (arr[tail] >= 0) {
tail--;
}
if (head < tail) {
// 交换head和tail指针所指向的数据
int temp = arr[head];
arr[head] = arr[tail];
arr[tail] = temp;
}
}
}
int main() {
int arr[] = {1, -2, 3, -4, 5, -6};
int size = sizeof(arr) / sizeof(arr[0]);
rearrangeNegative(arr, size);
printf("重新排列后的数组:");
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
运行结果:
重新排列后的数组:-2 -4 -6 1 5 3
阅读全文