The
following code implements linear search (Searching algorithm) which is used to
find whether a given number is present in an array or not and if it is present
then at what location it occurs. It is also known as sequential search. It is
very simple and works as follows: we keep on comparing each element with the
element to search until the desired element is found. Time required to search
an element using linear search algorithm depends on the size of list. In the best case, element is present at the beginning of list and in the worst case, element is present at
the end. Time complexity of linear search is O(n).
#include
<stdio.h>
int main() {
int
array[100], search, c, n;
printf("\nEnter
the number of elements in array: ");
scanf("%d",&n);
printf("\n\nEnter
%d integer(s): \n", n);
for (c = 0;
c < n; c++)
scanf("%d",
&array[c]);
printf("\n\nEnter
the number to search: ");
scanf("%d",
&search);
for (c = 0;
c < n; c++) {
if (array[c]
== search) {
printf("\n%d
is present at location %d.\n\n", search, c+1);
break;
}}
if (c == n)
printf("\n%d
is not present in array.\n\n", search);
return 0;
}
Linear
search for multiple occurrences: n the code below we will print all the
locations at which required element is found and also the number of times it
occur in the list.
#include
<stdio.h>
int main() {
int
array[100], search, c, n, count = 0;
printf("\nEnter
the number of elements in array: ");
scanf("%d",
&n);
printf("\n\nEnter
%d numbers: \n", n);
for ( c = 0
; c < n ; c++ )
scanf("%d",
&array[c]);
printf("\n\nEnter
the number to search: ");
scanf("%d",
&search);
for (c = 0;
c < n; c++) {
if (array[c]
== search) {
printf("\n%d
is present at location %d.\n\n", search, c+1);
count++;
}}
if (count ==
0)
printf("\n%d
is not present in array.\n\n", search);
else
printf("\n%d
is present %d times in array.\n\n", search, count);
return 0;
}
Linear
search using function
#include
<stdio.h>
long
linear_search(long [], long, long);
int main() {
long
array[100], search, c, n, position;
printf("Input
number of elements in array: ");
scanf("%ld",
&n);
printf("\n\nInput
%d numbers: ", n);
for (c = 0;
c < n; c++)
scanf("%ld",
&array[c]);
printf("\n\nInput
number to search: ");
scanf("%ld",&search);
position =
linear_search(array, n, search);
if (position
== -1)
printf("\n%d
is not present in array.\n\n", search);
else
printf("\n%d
is present at location %d.\n\n", search, position+1);
return 0;
}
long linear_search(long
a[], long n, long find) {
long c;
for (c = 0
;c < n ; c++ ) {
if (a[c] ==
find)
return c;
}
return -1;
}
Linear search using pointer: copy the
first part (L.S. with function)
long linear_search(long *pointer, long
n, long find) {
long c;
for (c = 0; c < n; c++) {
if (*(pointer+c) == find)
return c;
}
return -1;
}