int partition( int[] array, int lowerIndex, int higherIndex){
		if(lowerIndex<0 || higherIndex>=array.length || lowerIndex>=higherIndex)
			return -1;
		int i = lowerIndex;
		int j = higherIndex;
		// calculate pivot number, I am taking pivot as middle index number
		int pivot = array[lowerIndex+(higherIndex-lowerIndex)/2];
		// Divide into two arrays
		while (i < j) {
			/**
			 * In each iteration, we will identify a number from left side which
			 * is greater then the pivot value, and also we will identify a number
			 * from right side which is less then the pivot value. Once the search
			 * is done, then we exchange both numbers.
			 */
			while (array[i] < pivot) {
				i++;
			}
			while (array[j] > pivot) {
				j--;
			}
			if (i <= j) {
				swap(array,i, j);
				//move index to next position on both sides
				i++;
				j--;
			}
		}
		System.out.println(Arrays.toString(array));
		return i;
	}