Beruflich Dokumente
Kultur Dokumente
LAB ASSESMENT -2
Submitted By:
BUBBLE SORT:
Algorithm:-
if list[j]>list[j+1]
end for
return list
end BubbleSort
Program:-
#include<stdio.h>
int main()
int a[50],n,i,j,temp;
scanf("%d",&n);
for(i=0;i<n;++i)
scanf("%d",&a[i]);
for(i=1;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;
for(i=0;i<n;++i)
printf("%d ",a[i]);
return 0;
}
Insertion Sort
Algorithm:-
Program:-
#include<stdio.h>
int main()
{
int i,j,n,temp,a[30];
printf("Enter the number of elements:");
scanf("%d",&n);
printf("\nEnter the elements\n");
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=1;i<=n-1;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;
}
return 0;
}
Merge sort
Algorithm:-
Step 2 − divide the list recursively into two halves until it can no more be divided.
Step 3 − merge the smaller lists into new list in sorted order.
Program:-
#include<stdio.h>
int main()
int a[30],n,i;
printf("Enter no of elements:");
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
mergesort(a,0,n-1);
printf("%d ",a[i]);
return 0;
int mid;
if(i<j)
mid=(i+j)/2;
mergesort(a,i,mid);
mergesort(a,mid+1,j);
merge(a,i,mid,mid+1,j);
int temp[50];
int i,j,k;
i=i1;
j=i2;
k=0;
while(i<=j1 && j<=j2)
if(a[i]<a[j])
temp[k++]=a[i++];
else
temp[k++]=a[j++];
while(i<=j1)
temp[k++]=a[i++];
while(j<=j2)
temp[k++]=a[j++];
for(i=i1,j=0;i<=j2;i++,j++)
a[i]=temp[j];
}
CONVERT INFIX TO POSTFIX
Algorithm:-
PROGRAM:-
#include<stdio.h>
#include<conio.h>
#include<ctype.h>
#define MAX 50
int data[MAX];
int top;
}stack;
int precedence(char);
void main()
char infix[30],postfix[30];
gets(infix);
infix_to_postfix(infix,postfix);
stack s;
char x,token;
int i,j;
init(&s);
j=0;
for(i=0;infix[i]!='\0';i++)
token=infix[i];
if(isalnum(token))
postfix[j++]=token;
else
if(token=='(')
push(&s,'(');
else
if(token==')')
while((x=pop(&s))!='(')
postfix[j++]=x;
else
while(precedence(token)<=precedence(top(&s))&&!empty(&s))
{
x=pop(&s);
postfix[j++]=x;
push(&s,token);
while(!empty(&s))
x=pop(&s);
postfix[j++]=x;
postfix[j]='\0';
int precedence(char x)
if(x=='(')
return(0);
if(x=='+'||x=='-')
return(1);
if(x=='*'||x=='/'||x=='%')
return(2);
return(3);
}
s->top=-1;
if(s->top==-1)
return(1);
return(0);
if(s->top==MAX-1)
return(1);
return(0);
s->top=s->top+1;
s->data[s->top]=x;
int x;
x=s->data[s->top];
s->top=s->top-1;
return(x);
return (p->data[p->top]);
}
POSTFIX Expression EVALUATION
Algorithm:-
1) Add ) to postfix expression.
2) Read postfix expression Left to Right until ) encountered
3) If operand is encountered, push it onto Stack [End If]
4) If operator is encountered, Pop two elements i) A -> Top element ii) B-> Next to Top element
iii) Evaluate B operator A push B operator A onto Stack
5) Set result = pop
6) END
Program:-
#include<stdio.h>
#define MAX 20
{
int data[MAX];
int top;
}stack;
int main()
stack s;
char x;
int op1,op2,val;
init(&s);
while((x=getchar())!='\n')
if(isdigit(x))
push(&s,x-48);
else
op2=pop(&s);
op1=pop(&s);
val=evaluate(x,op1,op2);
push(&s,val);
val=pop(&s);
printf("\nValue of expression=%d",val);
return 0;
if(x=='+')
return(op1+op2);
if(x=='-')
return(op1-op2);
if(x=='*')
return(op1*op2);
if(x=='/')
return(op1/op2);
if(x=='%')
return(op1%op2);
}
void init(stack *s)
s->top=-1;
if(s->top==-1)
return(1);
return(0);
if(s->top==MAX-1)
return(1);
return(0);
s->top=s->top+1;
s->data[s->top]=x;
}
int pop(stack *s)
int x;
x=s->data[s->top];
s->top=s->top-1;
return(x);
Implementation of queue
Program:-
EMPTY-CHECK(QUEUE,FRONT,REAR,EMPTY)
bool isempty(){
if(front<0 || front>rear)
return true;
else
return false;
}
FULL-CHECK(QUEUE,FRONT,REAR,MAX,FULL)