一组整数中含有若干0,将这组整数中的所有0移至数列末尾,并将非零元素按从大到小排序,将数字序列保存在int A【nSize】
时间: 2024-03-06 20:48:02 浏览: 42
好的,根据您的要求,可以使用冒泡排序的思想来实现。具体实现过程如下:
1. 遍历整个数组,将所有非零元素往数组前面移动,同时将零往数组后面移动。
2. 遍历整个数组,对非零元素进行冒泡排序,从大到小排序。
下面是代码实现:
```c++
void moveZeroAndSort(int A[], int nSize) {
int i, j, tmp;
for (i = 0, j = 0; j < nSize; j++) {
if (A[j] != 0) {
tmp = A[i];
A[i] = A[j];
A[j] = tmp;
i++;
}
}
for (i = 0; i < nSize - 1; i++) {
for (j = 0; j < nSize - i - 1; j++) {
if (A[j] < A[j + 1]) {
tmp = A[j];
A[j] = A[j + 1];
A[j + 1] = tmp;
}
}
}
}
```
其中,变量 i 和 j 分别表示遍历数组时的下标,tmp 用于交换两个元素的值。第一个循环将非零元素往数组前面移动,并将零往数组后面移动。第二个循环对非零元素进行冒泡排序,从大到小排序。
使用该函数可以将数组中的所有零移至数组末尾,并将非零元素按从大到小排序。
阅读全文