탐색횟수 출력하려고 3시간동안 별지랄다했는데 이젠 에러가 뜸 ㅠㅠ
이거 도대체 뭐가 문제임?
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void printArray(int Array[], int size);
void BubbleSort(int Array[], int size);
int BinarySearch(int Array[], int size, int value, int *count);
int main() {
int iArray[20];
int k, s, iValueIndex, iSearchValue, count;
int size = sizeof(iArray) / sizeof(iArray[0]);
srand((unsigned int)time(NULL));
for (k = 0; k < size; k++) {
iArray[k] = rand() 0 + 2020161000;
for (s = 0; s < k; s++) {
if (iArray[s] == iArray[k]) {
k--;
break;
}
iArray[19] = 2020161129;
}
}
BubbleSort(iArray, size);
printArray(iArray, size);
iSearchValue = 2020161129;
iValueIndex = BinarySearch(iArray, size, iSearchValue, count);
printf("탐색 횟수: %d, 탐색 위치 : %d\n", count, iValueIndex);
return 0;
}
int BinarySearch(int Array[], int size, int value, int *count) {
int start = 0, middle, end = size - 1;
*count = 0;
while (start <= end) {
middle = (start + end) / 2;
(*count)++;
if (value < Array[middle]) { end = middle - 1; }
else if (value > Array[middle]) { start = middle + 1; }
else { return middle; }
}
return -1;
}
void BubbleSort(int Array[], int size) {
int k, s, temp;
for (k = 0; k < size - 1; k++) {
for (s = 0; s < size - 1 - k; s++) {
if (Array[s] > Array[s + 1]) {
temp = Array[s];
Array[s] = Array[s + 1];
Array[s + 1] = temp;
}
}
}
}
void printArray(int Array[], int size) {
int k;
printf("배열 : ");
for (k = 0; k < size; k++) {
printf("[%d]%d ", k, Array[k]);
}
putchar('\n');
}
해당 댓글은 삭제되었습니다.
제대로 배운적이 없다..
대학와서 첨배웠는데 싸강이여서 질문도 못하고 ㅠㅠ
적어도 보기쉽게라도 해야 보지않을까? - dc App