1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
void slice(int *array, int size, int min, int max, int *idx_lower, int *idx_upper){
int a = binary_search(array,min);
int b = binary_search(array, max);
if(*idx_lower < a && b < *idx_upper){
size = b-a;
for(int i = 0; i<size; i++){
printf("%d\n", array[a] + i );
}
}
else if(a > *idx_lower && b > *idx_upper){
size = *idx_upper - a;
for(int i = 0; i<size; i++){
printf("%d\n", array[a] + i);
}
}
else if(a < *idx_lower && b > *idx_upper){
size = *idx_upper - *idx_lower;
for(int i = 0; i<size; i++){
printf("%d\n", array[*idx_lower] + i);
}
}else{
size = b - *idx_lower;
for(int i = 0; i<size; i++){
printf("%d\n", array[*idx_lower] + i);
}
}
} |