我们有一个正整数类型的数组,假设为arr[],其大小可以任意给定,数组中的元素应该大于0但小于数组的大小。任务是将数组重新排列,使得如果arr[i]等于'i',则'i'在数组中存在,否则将arr[i]元素设为-1,并打印最终结果。
输入 − int arr[] = {0, 8, 1, 5, 4, 3, 2, 9 }
输出 − 重新排列后的数组为: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开始循环,直到i小于size。在循环内部,从j到0开始另一个循环,直到j小于size。
在循环内部,检查如果arr[j] = i,则设置ptr = arr[j],arr[j] = arr[i],arr[i] = ptr并且跳出循环。
从i到size开始循环。在循环内部,检查如果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]); //calling the function to rearrange an array such that arr[i] = i Rearranging(arr, size); //Printing the array 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,使用 C++的详细内容。更多信息请关注PHP中文网其他相关文章!