Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình Python để đảo ngược một mảng trong các nhóm có kích thước cho trước?

Ở đây chúng tôi sử dụng một mảng đầu vào của người dùng và kích thước của nhóm. Và chúng tôi tạo mảng phụ trên kích thước của nhóm và chúng tôi chỉ cần đảo ngược nó. Nếu kích thước của các nhóm (p) không bằng bội số kích thước của mảng (n) thì nhóm cuối cùng sẽ ít hơn k phần tử còn lại và đảo ngược tất cả các phần tử còn lại. Nếu p =1 thì mảng không đổi, nếu p> =1 thì chúng ta đảo ngược tất cả các phần tử trong mảng.

Thuật toán

Revarray(A,n,p)
/* A is an integer Array, n is the size of an array and every sub-array of size p starting from the beginning of the array and reverse it.*/
Step 1: i is the loop control variable which is initialized by 0.
Step 2: using while loop check i is less than n or not. If true
   Step 2.1: L=i	/* Left sub array
   Step 2.2: R=min (i+p-1, n-1)		/*Right sub array
   Step 2.3: Using while loop check L is than R or not. If yes
      Step 2.3.1: swap left sub array A (L) and Right Sub Array A(R).
      Step 2.3.2: L is incremented by 1.
      Step 2.3.3: R is stepping backward one step at a time.
	Step 2.4: End While
	Step 2.5: i=i+p
Step 3: End While
Step 4: Stop

Mã mẫu

#reverse of an array in groups of given size
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
     
# Driver code
#Insert data in an array
A=list()
n=int(input("Enter the size of the array ::"))
print("Enter the number ::")
for i in range(int(n)):
   k=int(input(""))
   A.append(int(k))
    
p=int(input("Enter the size of the group ::"))
arrayreverse(A, n, p) 
for i in range(0, n):
   print(A[i], end =" ")         

Đầu ra

Enter the size of the array ::6
Enter the number ::
11
22
33
44
55
66
Enter the size of the group ::2
22 11 44 33 66 55