समस्या विवरण
यहां हम एक यूजर इनपुट सरणी और समूह का आकार उपयोग करते हैं। और हम समूह के आकार पर सब सरणी बनाते हैं और बस इसे उल्टा कर देते हैं। यदि समूहों का आकार (p) सरणी के आकार (n) का गुणक नहीं है तो अंतिम समूह में k से कम तत्व बचेंगे और शेष सभी तत्वों को उल्टा कर दें। यदि p=1 तो सरणी अपरिवर्तित रहती है, यदि p>=n तो हम सरणी के सभी तत्वों को उल्टा कर देते हैं।
एल्गोरिदम
- i लूप कंट्रोल वेरिएबल है जिसे 0 से आरंभ किया गया है।
- व्हाइल लूप का उपयोग करके जांचें कि i, n से कम है या नहीं। यदि हां तो:
- L = i (बाएं सब सरणी)
- R = min(i + p - 1, n - 1) (दाएं सब सरणी)
- व्हाइल लूप का उपयोग करके जांचें कि L, R से कम है या नहीं। यदि हां तो:
- बाएं सब सरणी A(L) और दाएं सब सरणी A(R) को स्वैप करें।
- L को 1 से बढ़ाएं।
- R को एक स्टेप पीछे करें।
- व्हाइल लूप समाप्त करें।
- i = i + p
- व्हाइल लूप समाप्त करें।
- रुकें।
उदाहरण कोड
# दिए गए आकार के समूहों में सरणी को उल्टा करने का फंक्शन
def arrayreverse(A, n, p):
i = 0
while(i < n):
L = i
R = min(i + p - 1, n - 1)
while (L < R):
A[L], A[R] = A[R], A[L]
L += 1
R -= 1
i += p
# ड्राइवर कोड
# सरणी में डेटा डालें
A = list()
n = int(input("सरणी का आकार दर्ज करें ::"))
print("संख्या दर्ज करें ::")
for i in range(int(n)):
k = int(input(""))
A.append(int(k))
p = int(input("समूह का आकार दर्ज करें ::"))
arrayreverse(A, n, p)
for i in range(0, n):
print(A[i], end=" ")
आउटपुट
सरणी का आकार दर्ज करें ::6
संख्या दर्ज करें :: 11 22 33 44 55 66
समूह का आकार दर्ज करें ::2
22 11 44 33 66 55