我們有一個正整數型別的數組,假設為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中文網其他相關文章!