DSA: 03-Jan
1) Linear search
// linear search
#include <stdio.h>
int main()
{
int size=0;
int index = -1;
int element;
printf("Enter size of array: ");
scanf("%d", &size);
printf("Enter elements of array: ");
int arr[size];
int i=0;
for(i=0; i< size; i++){
scanf("%d", &arr[i]);
// printf("Elements of arr: %d", arr[i]);
}
printf("Element to search:");
scanf("%d", &element);
for(i=0; i< size; i++){
if(arr[i] == element){
index = i;
printf("element found at index%d", index);
return index;
}
}
printf("enter a valid element");
return 0;
}
2) Binary search
// linear search
#include <stdio.h>
void swap(int* xp, int* yp)
{
int temp = *xp;
*xp = *yp;
*yp = temp;
}
// Function to perform Selection Sort
void selectionSort(int arr[], int n)
{
}
int main()
{
int size=0;
int index = -1;
int element;
printf("Enter size of array: ");
scanf("%d", &size);
printf("Enter elements of array : ");
int arr[size];
int i=0;
for(i=0; i< size; i++){
scanf("%d", &arr[i]);
// printf("Elements of arr: %d", arr[i]);
}
printf("Element to search:");
int k, j, min_idx;
// One by one move boundary of unsorted subarray
for (k= 0; k < size - 1; k++) {
// Find the minimum element in unsorted array
min_idx = k;
for (j = k + 1; j < size; j++)
if (arr[j] < arr[min_idx])
min_idx = j;
// Swap the found minimum element
// with the first element
swap(&arr[min_idx], &arr[k]);
}
return 0;
}
------> Single code----->>>>
#include <stdio.h>
void swap(int* xp, int* yp)
{
int temp = *xp;
*xp = *yp;
*yp = temp;
}
void sort(int arr[], int size)
{
int k, j, min_idx;
for (k= 0; k < size - 1; k++) {
min_idx = k;
for (j = k + 1; j < size; j++)
if (arr[j] < arr[min_idx])
min_idx = j;
swap(&arr[min_idx], &arr[k]);
}
}
int findMean(int first, int last)
{
if((first+last)%2 != 0){
return (first+last+1)/2;
} else {
return (first+last)/2;
}
}
void binarySearch(int arr[], int size, int element)
{
sort(arr, size);
int first = 0, last = size , mean = findMean(first, last);
while(first< last){
if(element>arr[mean]){
first = mean;
mean = findMean(first, last);
} else if(element == arr[mean])
{
printf("Element found at index : %d", mean);
return ;
} else {
last= mean;
mean = findMean(first, last);
}
};
printf("Not found! Enter a valid element");
}
void linearSearch(int arr[], int size, int element)
{
for(int i=0; i< size; i++){
if(arr[i] == element){
printf("element found at index%d : ", i);
return ;
}
}
printf("Not found! Enter a valid element");
}
int main()
{
int size=0, index = -1, element;
printf("Enter size of array: ");
scanf("%d", &size);
printf("Enter elements of array : ");
int arr[size];
int i=0;
for(i=0; i< size; i++){
scanf("%d", &arr[i]);
}
printf("Element to search:");
scanf("%d",&element);
//linearSearch(arr,size, element); // for linearSearch
binarySearch(arr, size, element); // for binarySearch
return 0;
}
Comments
Post a Comment