Exemple #1
0
int main () {

	int test[] = {1, 3, 6, 8, 9, 10, 14};

	printf("%u\n", binary_sort(test, 10, 0, 6));

}
void binary_sort(T array[], int len) {

  if(len <= 1)
    return;
  else if(len == 2) {
    if(array[1] > array[0])
      return;
    else {
      T tmp = array[0];
      array[0] = array[1];
      array[1] = tmp;
      return;
    }
  }
  else {

    T arr1[len/2];
    T arr2[len - (len/2)];
    int i;
    for(i = 0; i < len/2; i++)
      arr1[i] = array[i];
    for(; i < len; i++)
      arr2[i - (len/2)] = array[i];

    binary_sort(arr1, len/2);
    binary_sort(arr2, (len - len/2));

    int j;
    for(i = j = 0; i < len/2 && j < (len - len/2);) {
      if(arr1[i] < arr2[j]) {
	array[i+j] = arr1[i];
	i++;
      }
      else {
	array[i+j] = arr2[j];
	j++;
      }
    }
    for(; j < (len - len/2); j++)
      array[i+j] = arr2[j];
    for(; i < len/2; i++)
      array[i+j] = arr1[i];
  }
}
Exemple #3
0
int binary_sort (int a[], int x, int min, int max) {

	int half = a[(int)(max+min)/2];

	if (min > max)
		return -1;
	else

		if (half > x) {
			binary_sort(a, x, min, ((max+min)/2) - 1);
		}
		else if (half < x) {
			binary_sort(a, x, ((max+min)/2) + 1, max);
		}
		else {
			return (max+min)/2;
		}

}