重新排列一个数组,使得 arr[i] = i 在 C++ 中

我们得到一个正整数类型数组,比方说,任何给定大小的 arr[] ,这样数组中的元素的值应该大于 0 但小于数组的大小。任务是以这样的方式重新排列数组,如果 arr[i] 是 'i',如果 'i' 存在于数组中,否则它将设置 arr[i] 元素的值为 -1 并打印最终的结果。

让我们看看这个的各种输入输出场景 -

输入 - int arr[] = {0, 8, 1, 5, 4, 3, 2, 9 }

输出 - 数组的重新排列使得 arr[i] = i 为:0 1 2 3 4 5 -1 -1

说明 - 我们给定一个大小为 8 的整数数组,数组中的所有元素都小于 8。现在,我们将重新排列数组,即

arr[0] = 0(present in an array)

arr[1] = 1(present in an array)

arr[2] = 2(present in an array)

arr[3] = 3(present in an array)

arr[4] = 4(present in an array)

arr[5] = 5(present in an array)

arr[6] = -1(NOT present in an array)

arr[7] = -1(NOT present in an array)

输入 - int arr[] = {1, 2, 6, 9, 10}

输出 - 重新排列数组,使得 arr[i] = i 为:-1 1 2 -1 -1

说明 - 我们给定一个大小为 5 的整数数组,数组中的所有元素都小于 5。现在,我们将重新排列数组,即

arr[0] = -1(NOT present in an array)

arr[1] = 1(present in an array)

arr[2] = 2(present in an array)

arr[3] = -1(NOT present in an array)

arr[4] = -1(NOT present in an array)

下面程序中使用的方法如下

  • 输入整数类型元素的数组并计算数组的大小。

  • 排列前打印数组并调用函数 Rearranging(arr, size)

  • 函数内部 Rearranging(arr, size)

    • 声明一个整数类型变量比方说,ptr

    • 从 i 到 0 开始循环 FOR,直到 i 小于 size。在循环内,从 j 到 0 开始另一个循环 FOR,直到 j 小于 size。

    • 在循环内,检查 IF arr[j] = i 然后设置 ptr = arr[j], arr[j] 到 arr[i],arr[i] 到 ptr 并中断。

    • 从 i 开始循环 FOR 直到 i 小于 size。在循环内,检查 IF arr[i]!=i 然后将 arr[i] 设置为 -1。

  • 在数组的值重新排列后打印数组。

示例

#include <iostream>

using namespace std;

void Rearranging(int arr[], int size){

   int ptr;

   for(int i = 0; i < size; i++){

      for(int j = 0; j < size; j++){

         if(arr[j] == i){

            ptr = arr[j];

            arr[j] = arr[i];

            arr[i] = ptr;

            break;

         }

      }

   }

   for(int i = 0; i < size; i++){

      if(arr[i] != i){

         arr[i] = -1;

      }

   }

}

int main(){

   int arr[] = {0, 8, 1, 5, 4, 3, 2, 9 };

   int size = sizeof(arr) / sizeof(arr[0]);

   //调用函数重新排列数组,使得 arr[i] = i

   Rearranging(arr, size);

   //打印数组

   cout<<"Rearrangement of an array such that arr[i] = i is: ";

   for(int i = 0; i < size; i++){

      cout << arr[i] << " ";

   }

}

输出结果

如果我们运行上面的代码,它将生成以下输出

Rearrangement of an array such that arr[i] = i is: 0 1 2 3 4 5 -1 -1

以上是 重新排列一个数组,使得 arr[i] = i 在 C++ 中 的全部内容, 来源链接: utcz.com/z/345702.html

回到顶部