I have the following code for helpers.c. When I run find, if I input numbers by hand, it sorts them and finds/doesn't find the n correctly. However, when I use generate to input the numbers, I can see that they are sorted, but it always returns that there is no needle in the haystack. I have not changed generate.c, other than to add comments. Any advice would be greatly appreciated! Thanks!
#include <cs50.h>
#include <stdio.h>
#include "helpers.h"
/**
* Returns true if value is in array of n values, else false.
*/
bool search(int value, int values[], int n)
{
// Set values for the top and bottom of the search
int lower = values[0];
int upper = values[n-1];
// Do not allow negative numbers
if (n < 0)
{
return false;
}
// Binary search
while (lower <= upper)
{
//Set middle
int middle = (upper + lower) / 2;
//Compare value to middle, cut search in half
if (values[middle] == value)
{
return true;
}
if (values[middle] < value)
{
lower = middle + 1;
}
if (values[middle] > value)
{
upper = middle - 1;
}
}
return false;
}
/**
* Sorts array of n values.
*/
void sort(int values[], int n)
{
// TODO: implement an O(n^2) sorting algorithm
// Cycle through array
for (int k = 0; k < n - 1; k++)
{
//Optimize; check if there are no swaps
int swaps = 0;
//Swap adjacent elements if out of order
//Iterate through the array
for (int i = 0; i < n - 1 - k; i++)
{
// Check if array[i] and array[i+1] are in order
if (values[i] > values[i+1])
{
int temp = values[i+1];
values[i+1] = values[i];
values[i] = temp;
swaps++;
}
else if (swaps == 0)
{
}
}
}
//To print the sorted array
for (int a = 0; a < n; a++)
{
printf("%i, ", values[a]);
}
printf("\n");
}