0

我需要帮助编写一个名为的函数,该函数swap按从最高到最低的顺序对数组的元素进行排序,并在其中下降和上升。这个函数的一个特别之处是 swap 不会重新排列数组中的元素,因此它只使用第二个索引数组作为原始数组中的元素,然后 swap 根据原始数组中的值对第二个数组进行排序。然后可以使用这些排序索引生成原始数组的排序版本。您可以在没有任何用户输入的情况下声明和初始化原始数组。例如,

int arr[10] = {1, 5, 22, 14, 6, -5, 7, 9, 12, 15 };

函数swap的头部必须如下所示:

void swap(int array[],int swapedIndexes [], int size, char mode)

当 mode 为'a'时,函数按升序对数组进行排序,当 mode 为 时'd',函数按降序对数组进行排序。

例子:

int array[5]={2, 4,0,-5,3};
int sortedIndexes[5];
sortMe(array,sortedIndexes, 5, 'a');

这是索引应该如何处理的另一个示例:如果我有int number[] = {32,92,11,72};

示例:数字前:32 91 11 72 索引:0 1 2 3

编号后:11 32 72 91 索引:2 0 3 1

======================================

如果你的函数重新排列数组数组中的元素,那就错了。如果在函数main中初始化数组sortedIndexes,则错误函数必须对任意大小的数组进行排序;否则,它是错误的。如果您以任何方式更改函数交换的标题,也是错误的。

所以...有人可以告诉我如何为此打印出数组的索引吗?你能提供一个代码或什么吗?我不确定如何使用第二个 int swappedindexes 数组;???这是我遇到最多问题的地方。到目前为止,我有一个简单的交换代码。

#include <iostream>
using namespace std;

int main() {
  int a[10], swap;
  for ( int i = 0; i < 10; ++i )
    cin >> a[i];
  for ( int i = 0; i < 10; ++i ) {
    for ( int j = i; j < 10; ++j ){
      if( a[j] > a[i] ) {
        swap = a[i];
        a[i] = a[j];
       a[j] = swap;
      }
    }
  }

  for ( int i = 0; i < 10; ++i )
    cout << a[i] << " ";
  return 0;
}
4

0 回答 0