Amazon Interview Question

Given a sorted array. Insert a value into correct position of the array so that the array remains sorted.

Interview Answers

Anonymous

Aug 13, 2012

for(i=0;in) { for(j=MAX_SIZE-1;j>=i;j--) a[j] = a[j-1]; break; } }

Anonymous

Oct 17, 2012

Use binary search to find the correct position. O(lgn) comparisons. private static int[] insert(int[] a, int val) { if(val 0; i--){ a[i] = a[i - 1]; } a[0] = val; return a; } else if(val > a[a.length - 2]){ a[a.length - 1] = val; return a; } else return insert(a, val, 0, a.length - 1); } private static int[] insert(int[] a, int val, int start, int end) { int mid = (end - start)/2 + start; if(a[mid] mid + 1; i--){ a[i] = a[i - 1]; } a[mid + 1] = val; return a; } else if(val >= a[mid + 1]){ //search right side return insert(a, val, mid+1, end); } else { //search left side return insert(a, val, start, mid-1); } }