Labels

9Google AdSense

Showing posts with label Algorithoms. Show all posts
Showing posts with label Algorithoms. Show all posts

A program to sort n strings and then disply the sorted list of strings.

#include <stdio.h>
#include <conio.h>
#include <string.h>

void namesort(char name[15][20],int n);
void main()
{
     int i,n;
     char name[15][20],c;
     clrscr();
    printf("How many names u want to enter : ");
    scanf("%d",&n);
    scanf("%c",&c);
    printf("\nEnter  name : \n\n");
    for(i=0;i<n;i++)
    gets(name[i]);

    namesort(name,n);

    printf("\n\n******After Sorting******\n\n");
    for(i=0;i<n;i++)
       printf("%s\n",name[i]);
    getch();
}

void namesort(char name[15][20],int n)
{
      int i,j;
      char *temp;
      for(i=0;i<n;i++)
      {
     for(j=0;j<n-1;j++)
    {
        if(strcmp(name[j],name[j+1])>0)
        {
        strcpy(temp,name[j]);
        strcpy(name[j],name[j+1]);
        strcpy(name[j+1],temp);
        }
     }
      }
}

Longest common subsequence

#include<stdio.h>
#include<string.h>
#include<conio.h>

char x[20],y[20];

int b[100][100],c[100][100],m,n;

int length();

void print_lcs(int i, int j);

int main()
{
    clrscr();
    printf("First  String : ");
    gets(x);
    printf("\n");
    printf("Second String : ");
    gets(y);
    printf("\n");
    length();
    printf("\nLongest Common Subsequence : ");
    print_lcs(m,n);
    getch();
    return 0;
}
int length()
{
       int i,j;
    m=strlen(x);
    n=strlen(y);
    for(i=1;i<=m;i++)
        c[i][0]=0;
    for(j=0;j<=n;j++)
        c[0][j]=0;
    for(i=0;i<=m;i++)
        for(j=0;j<=n;j++)
        {
            if(x[i]==y[j])
            {
                c[i][j]=c[i-1][j-1]+1;
                b[i][j]=1;
            }
            else if(c[i-1][j]>=c[i][j-1])
            {
                c[i][j]=c[i-1][j];
                b[i][j]=2;
            }
            else
            {
                c[i][j]=c[i][j-1];
                b[i][j]=3;
            }
        }
    return c[m][n];

}

void print_lcs(int i, int j)
{
    if((i==-1)||(j==-1))
        return;
    if(b[i][j]==1)
    {
        print_lcs(i-1,j-1);
        printf("%c",x[i]);

    }
    else if(b[i][j]==2)
        print_lcs(i-1,j);
    else
        print_lcs(i,j-1);
}



Merge sort

#include<stdio.h>
#include<conio.h>
int mergesort(int a[],int p,int r);
int merge(int a[],int p,int q,int r);

int main()
{
    int a[200],n,l,i,j,p,r;
    clrscr();
    printf("N : ");
    scanf("%d", &n);
    printf("\nEnter the number  : ");
    for(i=1;i<=n;i++)
        scanf("%d",&a[i]); // Enter the numbers.
    p=1;
    r=n;
    mergesort(a,p,r);
    printf("\nThe Sorted number : ");
    for(i=1;i<=n;i++)
        printf("%d ",a[i]);
    getch();

  return 0;

}
int mergesort(int a[],int p,int r)
{
    int q;
    if(p<r)
    {
        q=(p+r)/2;
        mergesort(a,p,q);
        mergesort(a,q+1,r);
        merge(a,p,q,r);
    }
    return 0;
}
int merge(int a[],int p,int q,int r)
{
    int n1,n2,i,j,left[20],right[20],k;
    n1=q-p+1;
    n2=r-q;
    for(i=1;i<=n1;i++)
        left[i]=a[p+i-1];
    for(j=1;j<=n2;j++)
        right[j]=a[q+j];
    left[n1+1]=9999;
    right[n2+1]=9999;
    i=1;
    j=1;
    for(k=p;k<=r;k++)
    {
        if(left[i]<=right[j])
        {
            a[k]=left[i];
            i=i+1;
        }
        else
        {
            a[k]=right[j];
            j++;
        }
    }
    return 0;
}




Quicksort

#include<stdio.h>
#include<conio.h>

void quicksort(int a[20],int p,int r);
int partition(int a[20],int p,int r);

int main()
{
    int a[20],n,op,p,r,at;
    printf("N : ");
    scanf("%d",&n);
    printf("\nEnter the number  : ");
    for(op=1;op<=n;op++)
        scanf("%d",&a[op]);   // Enter the number.
    p=1;
    r=n;
    quicksort(a,p,r);

    printf("\nThe Sorted number : ");
    for(at=1;at<=n;at++)
        printf("%d ",a[at]);
    getch();

    return 0;
}


void quicksort(int a[20],int p,int r)
{       int q;
    if(p<r)
    {
        q=partition(a,p,r);
        quicksort(a,p,q-1);
        quicksort(a,q+1,r);
    }
}
int partition(int a[20],int p,int r)
{
    int x,i,j,temp,count;
    x=a[r];
    i=p-1;
    for(j=p;j<=r-1;j++)
    {
        if(a[j]<=x)
        {
            i=i+1;
            temp=a[i];
            a[i]=a[j];
            a[j]=temp;
        }
    }
    count=a[i+1];
    a[i+1]=a[r];
    a[r]=count;


    return i+1;
}

Heapsort

#include<stdio.h>
#include<conio.h>
#include<MATH.H>

void max_heapify(int A[],int i);
void build_max_heap(int A[]);
void heapsort(int A[]);
int left(int i);
int right(int i);

int length,A[30],heap_size;

int main()
{
    int p,lp;
    clrscr();
    printf("N : ");
    scanf("%d",&length);
    printf("\nEnter the number  : ");
    for(p=1;p<=length;p++)
        scanf("%d",&A[p]);
    heapsort(A);
    printf("\nThe Sorted number : ");
    for(lp=1;lp<=length;lp++)
        printf("%d ",A[lp]);
    getch();
    return 0;
}

int left(int i)
{
    return (2*i);
}
int right(int i)
{
    return ((2*i)+1);
}
void max_heapify(int A[],int i)
{
    int largest,l,r,temp;
    l=left(i);
    r=right(i);
    if((l<=heap_size)&&(A[l]>A[i]))
        largest=l;
    else
        largest=i;
    if((r<=heap_size)&&(A[r]>A[largest]))
        largest=r;
    if(largest!=i)
    {
        temp=A[i];
        A[i]=A[largest];
        A[largest]=temp;
        max_heapify(A,largest);
    }
}

void build_max_heap(int A[])
{
    int i;
    heap_size=length;
    for(i=(length/2);i>=1;i--) // be careful about this loop.
        max_heapify(A,i);
}
void heapsort(int A[])
{
    int i,temp1;
    build_max_heap(A);

    for(i=length;i>=2;i--)   // be careful about this loop.
    {
        temp1=A[1];
        A[1]=A[i];
        A[i]=temp1;
        heap_size=heap_size-1;
        max_heapify(A,1);
    }

}