Daa Experiments
Daa Experiments
Insertion sort
#include <stdio.h>
int main() {
int key,length,i,j;
int arr[100];
printf("enter length of array:");
scanf("%d",&length);
printf("enter elements of array:\n");
for(i=0;i<length;i++){
scanf("%d",&arr[i]);
}
for(j=0;j<length;j++){
for(i=j;i>0;i--){
if(arr[i]<arr[i-1]){
key=arr[i];
arr[i]=arr[i-1];
arr[i-1]=key;
}
}
}
printf("after insertion sort\n");
for(i=0;i<length;i++){
printf("%d\n",arr[i]);
}
return 0;
}
Merge sort
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
void merge(int arr[], int l, int m, int r) {
int i, j, k;
int n1 = m - l + 1;
int n2 = r - m;
int *L = (int *)malloc(n1 * sizeof(int));
int *R = (int *)malloc(n2 * sizeof(int));
int main() {
int arr[] = {5, 8, 2, 1, 4, 6, 7, 9};
int arr_size = sizeof(arr) / sizeof(arr[0]);
printf("Before sorting:\n");
printArray(arr, arr_size);
printf("After sorting:\n");
printArray(arr, arr_size);
getch();
return 0;
}
Kth smallest:
#include <stdio.h>
#include<conio.h>
#include<time.h>
void swap(int *a, int *b) {
int t = *a;
*a = *b;
*b = t;
}
int partition(int array[], int low, int high) {
int j;
int pivot = array[high];
int i = (low - 1);
for (j = low; j < high; j++) {
if (array[j] <= pivot) {
i++;
swap(&array[i], &array[j]);
}
}
swap(&array[i + 1], &array[high]);
return (i + 1);
}
void quickSort(int array[], int low, int high) {
if (low < high) {
int pi = partition(array, low, high);
quickSort(array, low, pi - 1);
quickSort(array, pi + 1, high);
}
}
void kth_element(int array[],int k) {
printf("%d",array[k]);
}
void main() {
int k;
int data[] = {8, 7, 2, 1, 0, 9, 6};
int n = sizeof(data) / sizeof(data[0]);
quickSort(data, 0, n - 1);
printf("Enter the index: ");
scanf("%d",&k);
kth_element(data,k);
getch();
clrscr();
}
0/1 knapsack:
#include<stdio.h>
#include<conio.h>
int max(int a, int b){
if (a>b)
return a;
else
return b;
}
int knapsack(int W,int wt[],int val[], int n){
if(n==0||W==0)
return 0;
if(wt[n-1]>W)
return knapsack(W,wt,val,n-1);
else
return max(val[n-1]+knapsack(W-wt[n-1],wt,val,n-1), knapsack(W,wt,val,n-1));
}
int main(){
int wt[200],val[200],i,W,n;
printf("\nEnter the no of items: ");
scanf("%d",&n);
printf("\nEnter the total weight of the knapsack: ");
scanf("%d",&W);
for(i=0;i<n;i++)
{
printf("\nEnter the %dth item weight: ",i+1);
scanf("%d",&wt[i]);
}
for(i=0;i<n;i++)
{
printf("\nEnter the %dth item value: ",i+1);
scanf("%d",&val[i]);
}
printf("\nMaximum profit for the given values and weights is:
%d\n",knapsack(W,wt,val,n));
getch();
return 0;
}
Fractional Knapsack :
#include<stdio.h>
#include<conio.h>
void fknapsack(int n,float wt[],float pf[],float capacity){
float x[20],tp=0;
int i,j,u;
u=capacity;
for(i=0;i<n;i++){
x[i]=0.0;
}
for(i=0;i<n;i++){
if(wt[i] > u){
break;
}
else{
x[i]=1.0;
tp=tp+pf[i];
u=u-wt[i];
}
}
if(i<n){
x[i]=u/wt[i];
}
tp=tp+(x[i] * pf[i]);
printf("The result vector is:");
for(i=0;i<n;i++){
printf("%f\t",x[i]);
}
printf("Maximum Profit is: %f",tp);
}
void main(){
float capacity,weight[20],profit[20];
int n,i,j;
float ratio[20],temp;
printf("Enter no of Objects: ");
scanf("%d",&n);
for(i=0;i<n;i++){
ratio[i]=profit[i]/weight[i];
}
for(i=0;i<n;i++){
for(j=i+1;j<n;j++){
if(ratio[i]<ratio[j]){
temp=ratio[j];
ratio[j]=ratio[i];
ratio[i]=temp;
temp=weight[j];
weight[j]=weight[i];
weight[i]=temp;
temp=profit[j];
profit[j]=profit[i];
profit[i]=temp;
}
}
}
fknapsack(n,weight,profit,capacity);
getch();
clrscr();
}
All Pair shortest path (floyd warshall):
#include <stdio.h>
#define V 4
#define INF 999999
// Function call
clrscr();
floydWarshall(graph);
getch();
return 0;
}