इस ट्यूटोरियल में, हम एक प्रोग्राम लिखने जा रहे हैं जो सभी शून्य को सामने और एक को सरणी के अंत में ले जाता है।
शून्य और एक के साथ यादृच्छिक पूर्णांकों वाली एक सरणी दी गई है। हमें सभी शून्य को सरणी की शुरुआत में और एक को सरणी के अंत में ले जाना है। आइए एक उदाहरण देखते हैं।
इनपुट
arr = [4, 5, 1, 1, 0, 0, 2, 0, 3, 1, 0, 1]
आउटपुट
0 0 0 0 4 5 2 3 1 1 1 1
एल्गोरिदम
- सरणी आरंभ करें।
- इंडेक्स को 1 पर आरंभ करें।
- दी गई सरणी पर पुनरावृति करें।
- यदि वर्तमान तत्व शून्य नहीं है, तो इंडेक्स पर मान को वर्तमान तत्व से अपडेट करें।
- इंडेक्स बढ़ाएं।
- एक लूप लिखें जो उपरोक्त इंडेक्स से n तक पुनरावृति करता है।
- सभी तत्वों को 1 से अपडेट करें।
- 0 के लिए भी इसी तरह करें। इंडेक्स बढ़ाने के बजाय, सभी शून्य को सरणी के सामने ले जाने के लिए इसे घटाएं।
कार्यान्वयन
निम्नलिखित C++ में उपरोक्त एल्गोरिदम का कार्यान्वयन है:
#include <bits/stdc++.h>
using namespace std;
void update1And0Positions(int arr[], int n) {
int index = 0;
for (int i = 0; i < n; i++) {
if (arr[i] != 1) {
arr[index++] = arr[i];
}
}
while (index < n) {
arr[index++] = 1;
}
index = 0;
for (int i = n - 1; i >= 0; i--) {
if (arr[i] == 1) {
continue;
}
if (!index) {
index = i;
}
if (arr[i] != 0) {
arr[index--] = arr[i];
}
}
while (index >= 0) {
arr[index--] = 0;
}
}
int main() {
int arr[] = { 4, 5, 1, 1, 0, 0, 2, 0, 3, 1, 0, 1 };
int n = 12;
update1And0Positions(arr, n);
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
आउटपुट
यदि आप उपरोक्त कोड चलाते हैं, तो आपको निम्नलिखित परिणाम मिलेगा।
0 0 0 0 4 5 2 3 1 1 1 1