
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Merge Sorted Array in Python
Suppose we have two sorted arrays A and B. We have to merge them and form only one sorted array C. The size of lists may different.
For an example, suppose A = [1,2,4,7] and B = [1,3,4,5,6,8], then merged list C will be [1,1,2,3,4,4,5,6,7,8]
To solve this, follow these steps −
- define i := 0, j := 0 and end := length of A – 1
- while end >= 0 and not A[end],
- end := end – 1
- while j < length of B
- if i > end and not A[i], then A[i] := B[j], and increase j by 1
- otherwise if A[i] > B[j], then perform shift(A, i), A[i] := B[j], increase end and j by 1
- increase i by 1
The shift method will work like below −
- take input num_arr, and i
- j := length of num_arr – 1
- while not num_arr [j] do j := j – 1
- while j >= i, do num_arr[j + 1] = num_arr[j], and j := j – 1
Let us see the implementation to get better understanding
Example
class Solution(object): def merge(self, nums1, m, nums2, n): i = 0 j = 0 end = len(nums1)-1 while end>=0 and not nums1[end]: end-=1 while j<len(nums2) : if i>end and not nums1[i]: nums1[i] = nums2[j] j+=1 elif nums1[i]>nums2[j]: self.shift(nums1,i) nums1[i] = nums2[j] end+=1 j+=1 i+=1 return nums1 def shift(self,num,i): j = len(num)-1 while not num[j]: j-=1 while j>=i: num[j+1] = num[j] j-=1 ob = Solution() print(ob.merge([1,2,3,0,0,0],3,[2,5,6],3))
Input
[1,2,3,0,0,0] [2,5,6]
Output
[1, 2, 2, 3, 5, 6]
Advertisements