Executed Programs II Sem
Executed Programs II Sem
Selection Sort
#include <stdio.h>
void main( )
{
int a[100], n;
int i, j, small, pos;
printf("\nEnter number of elements\n");
scanf("%d",&n);
printf("\nEnter array elements\n");
for( i=0 ; i<n ; i++ )
scanf("%d",&a[i]);
printf("\nThe unsorted list is\n");
for( i=0 ; i<n ; i++ )
printf("\t%d",a[i]);
printf("\n");
for(i = 0; i < n-1 ; i++)
{
small = a[i];
pos = i;
for(j=i+1 ;j<n ;j ++)
if(a[j] < small)
{
small=a[j];
pos = j;
}
a[pos] = a[i];
a[i] = small;
}
printf("\n The sorted list is \n");
for( i=0 ; i<n ; i++ )
printf("\t%d",a[i]);
printf("\n");
}
Bubble sort
#include <stdio.h>
void main( )
{
int a[100], n;
int i, j, temp;
printf("\nEnter number of elements\n");
scanf("%d",&n);
printf("\nEnter array elements\n");
for( i=0 ; i<n ; i++ )
scanf("%d",&a[i]);
printf("\nThe unsorted list is\n");
for( i=0 ; i<n ; i++ )
printf("\t%d",a[i]);
printf("\n");
for(i = 0; i < n ; i++)
for(j=0 ;j<n-i ;j ++)
if(a[j] > a[j+1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1]=temp;
}
printf("\n The sorted list is \n");
for( i=1 ; i<=n ; i++ )
printf("\t%d",a[i]);
printf("\n");
}
Quick sort
#include <stdio.h>
void quicksort(int* , int, int);
void partition(int*, int, int, int* );
void main( )
{
int a[20], n, i;
printf("Enter the number of elements \n");
scanf("%d",&n);
printf("Enter %d elements \n",n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("The UnSorted elements are\n");
for(i=0;i<n;i++)
printf("\t%d",a[i]);
printf("\n");
quicksort( a, 0, n-1 );
printf("The Sorted elements are\n");
for(i=0;i<n;i++)
printf("\t%d",a[i]);
printf("\n");
}
/* Recursive Quick sort function */void quicksort(int a[], int low, int
high)
{
int pos;
if ( low < high )
{
partition( a , low , high, &pos);
quicksort( a , low, pos -1 );
quicksort( a , pos + 1, high);
}
}
/* Function to create partitions */
void partition (int a[], int low, int high, int *p)
{
int x, up, down,temp;
x = a[low] ;
up = high;
down = low ;
while ( down < up )
{
while ( (a [ down] <= x) && ( down < high ))
down = down + 1 ;
while ( a [ up] > x)
up = up - 1;
if ( down < up )
{
temp = a [ down ];
a [ down ] = a[ up];
a [ up] = temp;
}
}
a [ low ] = a [ up ];
a [ up ] = x;
*p = up;
}
Merge Sort
#include <stdio.h>
void mergesort( int*, int, int);
void merge( int*, int, int, int );
void main( )
{
int a[20], n, i;
printf("\nEnter the number of elements\n");
scanf("%d",&n);
printf("\nEnter %d elements \n",n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("\nThe UnSorted elements are\n");
for(i = 0; i < n;i++)
printf("\t%d",a[i]);
printf("\n");
mergesort(a, 0, n-1);
printf("\nThe Sorted elements are\n");
for(i = 0;i < n; i++)
printf("\t%d",a[i]);
printf("\n");
}
/* Merge_sort function */
void mergesort(int a[ ], int low, int high)
{
int mid;
if ( low < high )
{
mid = (low + high) /2;
mergesort( a , low, mid );
mergesort( a , mid + 1, high);
merge(a,low,mid,high);
}
}
/* Merge function */
void merge (int a[], int low, int mid, int high)
{ int i, j, k,c[20];
i = low ;
k = low;
j = mid + 1 ;
while ( ( i <=mid) && ( j <= high))
{
if ( a[i] < a[j] )
{
c[k] = a[i];
k++;
i++;
}
else
{
c[k] = a[j];
k++;
j++;
}
}
while ( i <= mid)
{
c[k] = a[i];
k++;
i++;
}
while ( j <= high)
{
c[k] = a[j];
k++;
j++;
}
for ( i = low; i <= k-1; i++)
a[i]= c[i];
}
Linear search
#include <stdio.h>
int Linear_search( int* , int , int );
void main( )
{
int a[100], ele, pos, n, i;
printf("\nEnter the size of the array :\n");
scanf("%d",&n);
printf("\nEnter %d elements\n",n);
for(i = 0 ; i < n ; i ++)
scanf("%d", &a[i]);
printf("\nEnter element to search :\n");
scanf("%d",&ele);
pos= Linear_search(a, ele,n);
if ( pos == -1)
printf("\nElement not present");
else
printf("\nElement found in position : %d", pos);
}
/* Function to search an item using linear search technique */
int Linear_search( int a [ ] , int e, int m)
{
int i;
for(i = 0 ; i < m ; i ++)
if ( a[i]==e )
return(i+1); return(-1);
}
Binary Search
#include <stdio.h>
int Binary_search( int *, int , int );
void main( )
{
int a[100], ele, pos, n, i;
printf("\n Enter the array size \n");
scanf("%d",&n);
printf("\n Enter %d elements in sorted order\n",n);
for(i = 0 ; i < n ; i ++)
scanf("%d", &a[i]);
printf("Enter the element to search\n");
scanf("%d",&ele);
pos= Binary_search(a, ele,n);
if ( pos == -1)
printf("Element not present \n");
else
printf("Element found in position :%d\n", pos);
}
/* Function to perform Binary search */
int Binary_search( int a [ ] , int e, int m)
{
int low, high, mid;
low = 0;
high = m - 1;
while (low <= high)
{
mid = (low + high) / 2;
if (e == a[mid])
return(mid+1);
if (e < a[mid])
high = mid - 1;
else
low = mid + 1;
}
return(-1);
}
do{
printf("Enter information field of the node\n");
scanf("%d",&ele);
Create_link_list(ele);
}while(toupper(ch)=='Y');
printf("\nThe linked list is \n");
Display(HEAD);
printf("\nInsert Operation\n\n");
do
{
printf("\nChoose Position To Insert: \n");printf("\n1. AT THE
BEGINING");
printf("\n2. AT THE END");
printf("\n3. AT A GIVEN POSITION");
printf("\n4. Display");
printf("\n5. EXIT");
printf("\n\nEnter your choice : ");
scanf("%d",&ch);
switch(ch)
{
case 1: {
printf("\nEnter element to add : ");
scanf("%d",&ele);
Insert_Beginning(ele);
printf("\nThe linked list is \n");
Display(HEAD);
break;
}
case 2: {
printf("\nEnter element to add : ");
scanf("%d",&ele);
Insert_End(ele);
printf("\nThe linked list is \n");
Display(HEAD);
break;
}
case 3: {
printf("\nEnter element to add : ");
scanf("%d",&ele);
printf("\nEnter position to add: ");
scanf("%d",&pos);
Insert_Position(ele,pos);
break;
}
case 4:
printf("\nThe linked list is \n");
Display(HEAD);
break;
}
}while(ch != 5);
}
/* Function to add a node to the linked list */
void Create_link_list(int ele)
{
NODE *NewNode,*CurrPtr;
NewNode=(NODE *)malloc(sizeof(NODE));
NewNode->info=ele;
NewNode->link=NULL;
if( HEAD==NULL)
HEAD=NewNode;
else
{
CurrPtr=HEAD;
while(CurrPtr->link!=NULL)
CurrPtr=CurrPtr->link;
CurrPtr->link=NewNode;
}
}
/* Function to display linked list elements */
void Display(NODE *CurrPtr)
{
printf("\n\n*********************************************\n");
CurrPtr=HEAD;
while(CurrPtr!=NULL)
{
printf("%d\t",CurrPtr->info);
CurrPtr=CurrPtr->link;
}
printf("NULL\n");
printf("*********************************************\n\n");
}
/* Function to insert a node at the beginning of the linked list */
void Insert_Beginning( int ITEM )
{
NODE *NewNode;
NewNode= (NODE *) malloc(sizeof(NODE));
NewNode->info=ITEM;
NewNode->link=HEAD;
HEAD = NewNode;
}
/* Function to insert a node at the end of the linked list */
void Insert_End (int ITEM)
{
NODE *NewNode, *CurrPtr;
NewNode= (NODE *) malloc(sizeof(NODE));
NewNode->info=ITEM;
NewNode->link=NULL;
CurrPtr=HEAD;
while(CurrPtr->link!=NULL)
CurrPtr=CurrPtr->link;
CurrPtr->link=NewNode;
}
/* Function to insert a node at a given position in a linked list */
void Insert_Position( int ITEM, int POS)
{
NODE *NewNode,*CurrPtr;
int i;
NewNode= (NODE *) malloc(sizeof(NODE));
NewNode->info=ITEM;
CurrPtr = HEAD;
if ( CurrPtr ==NULL)
{
printf("Position Out Of Range\n");
exit(0);
}
NewNode->link = CurrPtr->link;
CurrPtr->link = NewNode;
}
int Delete_Beginning( )
{
NODE *CurrPtr;
int ele;
if ( HEAD == NULL)
{
printf("\nDeletion not possible");
exit(0);
}
CurrPtr = HEAD;
ele = CurrPtr->info;
HEAD = CurrPtr->link;
free(CurrPtr);
return(ele);}
int Delete_End( )
{
NODE *CurrPtr,*PrevPtr;
int ele;
if ( HEAD == NULL)
{
printf("\nDeletion not possible");
exit(0);
}
CurrPtr = HEAD;
while ( CurrPtr->link != NULL)
{PrevPtr = CurrPtr;
CurrPtr = CurrPtr->link;
}
ele = CurrPtr->info;
PrevPtr->link = NULL;
free(CurrPtr);
return(ele);
}