Revision: 8825
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at October 9, 2008 17:26 by jaircazarin
Initial Code
#include<stdio.h> #include<stdlib.h> int FindSortedArrayRotationRecursive(int *array, int start, int end) { if(start == (end-1)) return start+1; if(array[start] <= array[end-1]) return 0; int middle = (start + end)/2; if(array[start] > array[middle]) return FindSortedArrayRotationRecursive(array, start, middle); else return FindSortedArrayRotationRecursive(array, middle, end); } int FindSortedArrayRotationIterative(int *array, int length) { int start = 0; int end = length-1; if(array[start] < array [end]) return start; while(start != end) { int middle = (start+end)/2; if(array[start] < array[middle]) start = middle; else end = middle; } return start+1; } int main() { int array[] = { 8, 9, 10, 1, 2, 3, 4, 5, 6, 7}; int x = FindSortedArrayRotationRecursive(array, 0, 10); int y = FindSortedArrayRotationIterative(array, 10); printf("%d\n", x); printf("%d\n", y); }
Initial URL
Initial Description
Implement the following function, FindSortedArrayRotation, which takes as its input an array of unique integers that has been sorted in ascending order, then rotated by an unknown amount X where 0 <= X <= (arrayLength - 1). An array rotation by amount X moves every element array[i] to array[(i + X) % arrayLength]. FindSortedArrayRotation discovers and returns X by examining the array. Consider performance, memory utilization and code clarity and elegance of the solution when implementing the function.
Initial Title
Find Sorted Array Rotation
Initial Tags
Initial Language
C