इस ट्यूटोरियल में, हम एक प्रोग्राम लिखने जा रहे हैं जो सभी जीरो को आगे और एक को एरे के अंत में ले जाता है।
शून्य के साथ एक सरणी और यादृच्छिक पूर्णांक के साथ दिया गया। हमें सभी शून्यों को शुरू करने के लिए और एक को सरणी के अंत में ले जाना है। आइए एक उदाहरण देखें।
इनपुट
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