need help in quick sort c program

Discussion in 'Programming' started by BeeArcade, Dec 24, 2007.

  1. #1
    Hi can anyone help about this i am getting a logical error in the program

    #include<stdio.h>
    #include<conio.h>
    void quicksort(int a[],int lb,int ub);
    void partitionarray(int a[],int lb,int ub,int loc);
    void main()
    {
    int a[100],n,i,lb,ub;
    printf("how many elements");
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
    printf("enter %dth",i+1);
    scanf("%d",&a);
    }
    quicksort(a,lb,ub);
    for(i=lb;i<ub+1;i++)
    printf("sorted array is");
    for(i=0;i<n;i++)
    {
    printf("%d\t",a);
    }
    getch();
    clrscr();
    }
    void quicksort(int a[],int lb,int ub)
    {
    int loc,n;
    //for(n=lb;n<ub;n++)

    if(lb<ub)
    {
    partitionarray(a,lb,ub,loc);
    quicksort(a,lb,loc-1);
    quicksort(a,loc+1,ub);
    }
    }
    void partitionarray(int a[],int lb,int ub,int loc)
    {
    int left,right,temp;
    int done;
    left=lb;
    right=ub;
    loc=lb;
    done=0;
    while(!done)
    {
    while((a[loc]<=a
    )&&(loc!=right))
    {
    right=right-1;
    }
    if(loc=right)
    {
    done=1;

    }
    else if (a[loc]>a
    )
    {
    temp=a
    ;
    a
    =a[loc];
    a[loc]=temp;
    loc=right;
    }
    if(!done)
    {
    while((a[loc]>=a
    )&&(loc!=left))
    left=left+1;
    }
    if(loc=left)
    {
    done=1;
    }
    else if(a[loc]<a
    )
    {
    temp=a
    ;
    a
    =a[loc];
    a[loc]=temp;
    loc=left;
    }
    }
    }​

     
    BeeArcade, Dec 24, 2007 IP