Be the first user to complete this post

Add to List 
57. Sort an Array According to the Order Defined by Another Array
Objective: Given an array of integers, write an algorithm to sort it according to the order defined by another array.
Input Array: 2 6 9 1 4 4 2 1 10 13 5 7 8 DefinedArray: 1 2 4 6 Output: 1 1 2 2 4 4 6 5 7 8 9 10 13
Method 1: Sort and Search
 Let's say two given arrays are InputArray and DefinedArray.
 Create an Aux array and copy all the elements of the InputArray.
 Create another boolean array, of the size InputArray
 Sort Aux array.
 Navigate through the DefinedArray and for each element x,
 Perform a binary search of x on the Aux array and find the first occurrence of x. If x is found, copy it to InputArray and mark it visited in the boolean array.
 Do scan on the Aux array, copy all the occurrences of x to InputArray, and mark all these indexes true in the boolean array.
 When DefinedArray is over, copy the rest of the elements (nonvisited) from Aux to InputArray.
Original Array : 2 6 9 1 4 4 2 1 10 13 5 7 8 Defined Array : 1 2 4 6 Output Array using Sort and search: 1 1 2 2 4 4 6 5 7 8 9 10 13
Method 2: Using Hashing
 Let's say two given arrays are InputArray and DefinedArray.
 Insert all the elements of InputArray in a Map. Element as key and its count as its value
 Navigate through the DefinedArray and for each element x,
 Check if the element is present in the Map, If yes then take its value (count) and insert those many x in the InputArray
 Once DefinedArray is completed, take the rest of the elements from the Map, sort, and insert them into InputArray
Original Array : 2 6 9 1 4 4 2 1 10 13 5 7 8 Defined Array : 1 2 4 6 Output Array using Hashing : 1 1 2 2 4 4 6 5 7 8 9 10 13