아니 ㅈㄴ 이거 돌리면 계속 숫자 못찾고 -1로 넘어가는데 왜그러냐


.

.

.

.

.

.

.

.

.

.








#include <stdio.h>

#include <stdlib.h>

#include <math.h>

#define LIMIT 101

#define SWAP(num1,num2,tmp) (tmp = num1, num1 = num2, num2 = tmp)


void sort(int arr[], int n)

{

int i, j, min, temp;

for (i = 0; i < n - 1; i++) {

min = i;

for (j = i + 1; j < n; j++)

if (arr[j] < arr[min])

min = j;

SWAP(arr[i], arr[min], temp);

}

}


int BSearch(int *arr, int len, int target)

{

int first = 0; 

int last = len - 1;     

int mid;

while (first <= last){

mid = (first + last) / 2;   

if (target == arr[mid]){

return mid;   

}

else {

if (target > arr[mid]){

first = mid + 1;   

}

else{

last = mid - 1;     

}

}

}

return -1; 

}


void main(void)

{

int i, n;

int arr[LIMIT];

printf("Enter the number of numbers to generate: ");

scanf("%d", &n);

for (i = 0; i < n; i++) {

arr[i] = rand() % 1000;

printf("%d ", arr[i]);

}

sort(arr, n);

printf("\n");

printf("\nSorted array:\n ");

for (i = 0; i < n; i++)

printf("%d ", arr[i]);

printf("\n");


int f, ret;

int len = sizeof(arr) / sizeof(int);

printf("\nEnter the number to search:");

scanf("%d", &f);

ret = BSearch(arr, len, f);

if (ret == -1) {

printf("The search number is not present.\n");

}

else {

printf("The search number is present in list[ %d ]\n", ret + 1);

}

}