I got almost all of my code to work for find, it passes all of the check50s except 1, it finds 42 in {39, 40, 41, 43} My code so far is:
/**
* helpers.c * * Helper functions for Problem Set 3. */
include
include
include "helpers.h"
include
/** * Returns true if value is in array of n values, else false. */ bool search(int value, int values[], int n) { if (value < 0) { return false; } int low = values[0]; int high = values[n - 1]; int mid = (low + high) / 2; //printf("Low: %i Mid: %i High %i\n", low, mid, high); for (int i = 0; i < low + high; i++) {
if (mid == value) {
return true;
}
else if (mid < value) {
low = mid + 1;
mid = (low + high) / 2;
}
else {
high = mid - 1;
mid = (low + high) / 2;
}
}
//printf("Low: %i Mid: %i High %i\n", low, mid, high);
//TODO: implement a searching algorithm
return false;
}
/**
* Sorts array of n values.
*/
void sort(int values[], int n)
{
int swapcount = 1;
//int iterations = 0;
//int swapcount = 1;
/if (n == 1) {
return;
}/
for (int i = 0; i < n-1 ; i++) {
if (values[i] > values[i + 1]) {
printf("before swap %i, %i\n", values[i], values[i + 1]);
int temp = values[i];
values[i] = values[i + 1];
values[i + 1] = temp;
printf("after swap %i, %i,\n", values[i], values[i + 1]);
swapcount++;
}
/*else {
printf("Nothing to swap\n");
}*/
/*for (int j = 0; j < n; j++) {
printf("%i\n", values[j]);
}*/
}
//return 0;
if (swapcount == 1) {
return;
for (int j = 0; j < n; j++) {
printf("Sorted array is %i", values[j]);
}
}
//iterations ++;
/*printf("%i Iterations\n", iterations);*/
/*printf("Sorted is\n");
for (int j = 0; j < n; j++) {
printf("%i\n", values[j]);
}*/
//printf("Your swapcount is %i\n", swapcount);
printf("%i swaps\n", swapcount);
for (int w = 0; w < n; w++) {
printf("array is %i\n", values[w]);
}
sort(values, n - 1);
// TODO: implement a sorting algorithm
//return;
}