c语言删除数值的负数,判断删除后的数组是否排序
时间: 2024-09-13 15:07:20 浏览: 27
在C语言中,删除数组中的负数可以通过遍历数组,将非负数复制到一个新的数组中,然后根据需要对新数组进行排序。以下是基本步骤和示例代码:
1. 遍历原始数组,检查每个元素是否为非负数。
2. 如果元素为非负数,将其添加到新数组中。
3. 记录非负数的数量,这将帮助确定新数组的大小。
4. 使用排序算法(例如冒泡排序、插入排序等)对新数组进行排序。
5. 检查排序后的新数组是否已经完全按升序排列。
下面是一个简单的示例代码,展示了如何实现上述步骤:
```c
#include <stdio.h>
// 函数用于判断数组是否已排序
int isSorted(int arr[], int size) {
for (int i = 1; i < size; i++) {
if (arr[i-1] > arr[i]) {
return 0; // 如果发现逆序,则不是排序的,返回0
}
}
return 1; // 数组是排序的,返回1
}
// 主函数
int main() {
int originalArray[] = {-3, 2, -1, 5, 4, -2};
int size = sizeof(originalArray) / sizeof(originalArray[0]);
int positiveArray[size]; // 新数组用于存储非负数
int j = 0; // 新数组的索引
// 删除负数并将非负数复制到新数组
for (int i = 0; i < size; i++) {
if (originalArray[i] >= 0) {
positiveArray[j++] = originalArray[i];
}
}
// 对新数组进行排序
// 这里使用简单的冒泡排序算法
for (int i = 0; i < j - 1; i++) {
for (int k = 0; k < j - i - 1; k++) {
if (positiveArray[k] > positiveArray[k + 1]) {
int temp = positiveArray[k];
positiveArray[k] = positiveArray[k + 1];
positiveArray[k + 1] = temp;
}
}
}
// 打印排序后的新数组
printf("排序后的数组: ");
for (int i = 0; i < j; i++) {
printf("%d ", positiveArray[i]);
}
printf("\n");
// 判断新数组是否排序
if (isSorted(positiveArray, j)) {
printf("新数组是排序的。\n");
} else {
printf("新数组不是排序的。\n");
}
return 0;
}
```