C Program For Sorting and Searching
C Program For Sorting and Searching
-------------------------------------------------------------------------------------------------------------------------
1).Data must be in a sorted order | 1).Data any order
2).Time complexity is O(log n) | 2).Time complexity is O(n).
3).Only 1 "When" condition used | 3).Any no. of "When" condition used
4).Only "=" relation operator is used | 4).any relation operator is used
5).Access is faster | 5).Access is slow
6).Only single dimensional array used | 6).single/multi dimensional array used
The code below assumes that the input numbers are in ascending order.
Download Binary search program.
Output of program:
Binary search is faster than linear search but list should be sorted, hashing is faster than binary
search and perform searches in constant time.
#include <stdio.h>
main()
scanf("%d", &item);
if (item == a[i])
break;
if (i > 9)
getch();
#include <stdio.h>
void bubble_sort();
int a[50], n;
main()
int i;
printf("\nEnter size of an array: ");
scanf("%d", &n);
scanf("%d", &a[i]);
bubble_sort();
printf("\n\nAfter sorting:\n");
printf("\n%d", a[i]);
getch();
void bubble_sort()
int j, k, temp;
temp = a[k];
a[k] = a[k+1];
a[k+1] = temp;
#include <stdio.h>
void selection_sort();
int a[50], n;
main()
int i;
scanf("%d", &n);
scanf("%d", &a[i]);
selection_sort();
printf("\n\nAfter sorting:\n");
getch();
void selection_sort()
min = i;
min = j;
temp = a[i];
a[i] = a[min];
a[min] = temp;
}
BUBBLE SORT USING C PROGRAM
#include<stdio.h>
int main(){
int s,temp,i,j,a[20];
scanf("%d",&s);
for(i=0;i<s;i++)
scanf("%d",&a[i]);
for(i=s-2;i>=0;i--){
for(j=0;j<=i;j++){
if(a[j]>a[j+1]){
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
for(i=0;i<s;i++)
return 0;
Output:
Enter 5 elements: 6 2 0 11 9
After sorting: 0 2 6 9 11
C PROGRAM FOR INSERTION SORT
#include<stdio.h>
int main(){
int i,j,s,temp,a[20];
scanf("%d",&s);
for(i=0;i<s;i++)
scanf("%d",&a[i]);
for(i=1;i<s;i++){
temp=a[i];
j=i-1;
while((temp<a[j])&&(j>=0)){
a[j+1]=a[j];
j=j-1;
}
a[j+1]=temp;
}
for(i=0;i<s;i++)
return 0;
Output:
Enter 5 elements: 3 7 9 0 2
After sorting: 0 2 3 7 9
int main(){
int s,i,j,temp,a[20];
scanf("%d",&s);
for(i=0;i<s;i++)
scanf("%d",&a[i]);
for(i=0;i<s;i++){
for(j=i+1;j<s;j++){
if(a[i]>a[j]){
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
for(i=0;i<s;i++)
printf(" %d",a[i]);
return 0;
Output:
Enter 5 elements: 4 5 0 21 7
#include<stdio.h>
void quicksort(int [10],int,int);
int main(){
int x[20],size,i;
printf("Enter size of the array: ");
scanf("%d",&size);
for(i=0;i<size;i++)
scanf("%d",&x[i]);
quicksort(x,0,size-1);
for(i=0;i<size;i++)
return 0;
void quicksort(int x[10],int first,int last){
int pivot,j,temp,i;
if(first<last){
pivot=first;
i=first;
j=last;
while(i<j){
while(x[i]<=x[pivot]&&i<last)
i++;
while(x[j]>x[pivot])
j--;
if(i<j){
temp=x[i];
x[i]=x[j];
x[j]=temp;
}
}
temp=x[pivot];
x[pivot]=x[j];
x[j]=temp;
quicksort(x,first,j-1);
quicksort(x,j+1,last);
}
Output:
Sorted elements: 0 1 2 3 8
#include<stdio.h>
#define MAX 50
void mergeSort(int arr[],int low,int mid,int high);
void partition(int arr[],int low,int high);
int main(){
int merge[MAX],i,n;
scanf("%d",&n);
printf("Enter the elements which to be sort: ");
for(i=0;i<n;i++){
scanf("%d",&merge[i]);
}
partition(merge,0,n-1);
for(i=0;i<n;i++){
}
return 0;
void partition(int arr[],int low,int high){
int mid;
if(low<high){
mid=(low+high)/2;
partition(arr,low,mid);
partition(arr,mid+1,high);
mergeSort(arr,low,mid,high);
}
void mergeSort(int arr[],int low,int mid,int high){
int i,m,k,l,temp[MAX];
l=low;
i=low;
m=mid+1;
while((l<=mid)&&(m<=high)){
if(arr[l]<=arr[m]){
temp[i]=arr[l];
l++;
}
else{
temp[i]=arr[m];
m++;
}
i++;
}
if(l>mid){
for(k=m;k<=high;k++){
temp[i]=arr[k];
i++;
}
}
else{
for(k=l;k<=mid;k++){
temp[i]=arr[k];
i++;
}
}
for(k=low;k<=high;k++){
arr[k]=temp[k];
}
Sample output:
int main(){
int a[3][3],b[3][3],c[3][3],i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&b[i][j]);
for(i=0;i<3;i++){
printf("\n");
for(j=0;j<3;j++)
printf("%d\t",a[i][j]);
}
for(i=0;i<3;i++){
printf("\n");
for(j=0;j<3;j++)
printf("%d\t",b[i][j]);
}
for(i=0;i<3;i++)
for(j=0;j<3;j++)
c[i][j]=a[i][j]-b[i][j];
for(i=0;i<3;i++){
printf("\n");
for(j=0;j<3;j++)
printf("%d\t",c[i][j]);
}
return 0;
int main(){
int a[10][10],b[10][10],i,j,k=0,m,n;
scanf("%d %d",&m,&n);
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
for(i=0;i<m;i++){
printf("\n");
for(j=0;j<m;j++){
printf("%d\t",a[i][j]);
}
}
for(i=0;i<m;i++)
for(j=0;j<n;j++)
b[i][j]=0;
for(i=0;i<m;i++){
for(j=0;j<n;j++){
b[i][j]=a[j][i];
printf("\n%d",b[i][j]);
}
}
for(i=0;i<m;i++){
printf("\n");
for(j=0;j<m;j++){
printf("%d\t",b[i][j]);
}
}
return 0;