Untitled
unknown
plain_text
4 years ago
2.1 kB
4
Indexable
#include <stdio.h>
#include "stdlib.h"
int* generate_random_array(int n)
{
//create array of n elements
int* arr=(int*)(malloc(n*sizeof(int));
///int* arr=(int*)(calloc(n,sizeof(int));
//initialize it with random numbers
int seed=13;
srandom(seed);
int i;
for(i=0;i<n;i++)
{
int rnd=(int)random();
rnd=(int)(((double)rnd/(double)RAND_MAX*100.0));
arr[i]=rnd;
}
return arr;
}
int* selection_sort(int* arr, int n)
{
//implement selection sort
int i;
//loop to do n search for the minimum
for(i=0;i<n;i++)
{
//for loop to find the minimum
int min=arr[i];
int min_idx=i;
int j;
for(j=i;j<n;j++)
{
if (min>arr[j])
{min=arr[j];
min_idx=j;}
//swap the min found with the first element(exchange arr[i] with arr[min_idx]
int temp=arr[i];
arr[i]=arr[min_idx];
arr[mon_idx]=temp;
}
}
}
int* binary_search(int* arr, int n,int val)
{
int idx=-1;
int start=0;
int end=n-1;
int middle;
//*keep changing the start and the end variables depending of which part of the array the value might be*//
for(;;)
{
middle=(start+end)/2;
if(val>arr[middle]);
{
// we are in the right side of the array
//change the start to the middle
start=middle;
if((end-start<2))
{dx=start;
return idx;}
}
else if(val<arr[middle])
{
//we are at the left side of the array
//change the start to the middle
end=middle;
if((end-start<2))
{dx=start;
return idx;}
}
else
{
val=arr[middle];
idx=middle;
return idx;
}
}
return idx;
}
int print_array(int*arr,int n)
{
int i;
for(i=0;i<n;i++)
{
printf("%d, ",arr[i]);
}
printf("\n");
}
int main()
{
int n=20;
int* arr=generate_random_array(n);
//print the arrat before sorting
print_array(arr,n);
selection_sort(arr,n);
//print the arrat before sorting
print_array(arr,n);
int idx=binary_search(arr,n,arr[17])
printf("ifx= %d\n",idx);
}Editor is loading...