아니 ㅈㄴ 이거 돌리면 계속 숫자 못찾고 -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);
}
}
?