QUICK SORT USING C PROGRAM





Source code of simple quick sort implementation using array ascending order in c programming language

#include<stdio.h>

void quicksort(int [10],int,int);

int main(){
  int x[20],size,i;

  printf("Enter size of the array: ");
  scanf("%d",&size);

  printf("Enter %d elements: ",size);
  for(i=0;i<size;i++)
    scanf("%d",&x[i]);

  quicksort(x,0,size-1);

  printf("Sorted elements: ");
  for(i=0;i<size;i++)
    printf(" %d",x[i]);

  return 0;
}

void quicksort(int x[10],int first,int last){
    int pivot,j,temp,i;

     if(first<last){
         pivot=first;
         i=first;
         j=last;

         while(i<j){
             while(x[i]<=x[pivot]&&i<last)
                 i++;
             while(x[j]>x[pivot])
                 j--;
             if(i<j){
                 temp=x[i];
                  x[i]=x[j];
                  x[j]=temp;
             }
         }

         temp=x[pivot];
         x[pivot]=x[j];
         x[j]=temp;
         quicksort(x,first,j-1);
         quicksort(x,j+1,last);

    }
}

Output:
Enter size of the array: 5
Enter 5 elements: 3 8 0 1 2
Sorted elements: 0 1 2 3 8






1. Write a c program for bubble sort.
5. Write a c program for heap sort.
7. Write a c program for shell sort.

20 comments:

Debayan said...

Thanks, its working! But while executing the program, the 'Run' window is disappearing before showing the result. Although, I have fixed it. If anyone is having the same problem then see below:

In the main function, put "getch();" before the "return 0" statement.

To run the program on a fresh screen:
include this header file at the top--> #include
and inside main function type "clrscr();" just after the variable declaration is done.

Thanks...

Debayan said...

Sorry, I havn't completed the header file name above..
To run on a new window include this header file>>
#include
and inside main function type "clrscr();" just after the variable declaration is done.

Hope it works!!
Thanks...

debayan said...

conio.h

Anonymous said...

debaan every1 can understand that much if he is trying this program

AJJU said...

can u please explain how it works?

Anonymous said...

working well but difficult to understand. Can anyone send discription at lovababu.golthi@gmail.com

Thanks in advance.

Anonymous said...

if you want to show the result without getch()
go to window--->output

sanjay said...

@all: http://www.cise.ufl.edu/~ddd/cis3020/summer-97/lectures/lec17/sld003.htm
here is the description.

Anonymous said...

Add prototype "int quicksort(int,int,int);" after the header files also add "#include" too to use gtech();

Anonymous said...

/*Add prototype "int quicksort(int,int,int);" after the header files also add "#include" too to use gtech();*/

Anonymous said...

Add prototype "int quicksort(int,int,int);" after the header files also add "conio.h" header file too to use getch();

Pinkish said...

//easy to understand

#include
#include
void quicksort(int [],int,int);
int main()
{
int x[20],size,i;

printf("Enter size of the array [<20]: ");
cin>>size;
printf("Enter %d elements: ",size);
for(i=0;i>x[i];
}
quicksort(x,0,size-1);

cout<<"Sorted elements: ";
for(i=0;i<size;i++)
cout<<x[i]<<" ";
getch();
return 0;
}
void quicksort(int x[],int first,int last)
{

int pivot,j,temp,i;
pivot=last;
for(i=first;i<pivot;i++)
{
if(x[pivot]<x[i])
{
temp=x[i];
x[i]=x[pivot-1];
x[pivot-1]=x[pivot];
x[pivot]=temp;
}
quicksort(x,first,pivot-1);
quicksort(x,pivot+1,last);
}
}

mukul rawal said...

if any one is looking to execute quick_sort using linked list , here's the code:

#include
#include
#include
struct linked_list
{
int data;
struct linked_list *link;
struct linked_list *prev;
};
typedef struct linked_list node;
void create(node *first);
void print(node *first);
node *quick_sort(node *first);
int count(node *first);
main()
{
node *first;
int x,n,i,j=0,m;
clrscr();
first=(node *)malloc(sizeof(node));
first->prev=0;

create(first);
printf("the numbers you have entered are :\n");
print(first);
n=count(first);
printf("\n the number of elements you have entered are: %d\n",n);
for(i=0;idata);
printf( " do you want to add more?(y=1/n=2)\n");
scanf("%d",&x);
if(x==2)
{
first->link=0;
}
else
{
first->link= (node *)malloc(sizeof(node));
first->link->prev=first;
create(first->link);
}
return;
}


void print(node *list)
{
if(list->link!=0)
{
printf("%d-> ",list->data);

if(list->link->link==0)
printf("%d",list->link->data);
print(list->link);
}
}



node *quick_sort(node *first)
{
node *save,*temp,*pivot,*p;
pivot=first;
temp=pivot->link;
while(temp!=0)
{
if(pivot->data > temp->data)
{
if(temp->link==0)
{
temp->prev->link=0;
temp->link=first;
first->prev=temp;
temp->prev=0;
first=temp;
break;
}
else
{
temp=temp->link;
temp->prev->link=first;
temp->prev->prev->link=temp;
first->prev=temp->prev;
temp->prev=temp->prev->prev;
first->prev->prev=0;
first=first->prev;
}
}

else
temp=temp->link;
}

pivot=pivot->link;
while(pivot->link!=0)
{
temp=pivot->link;
while(temp!=0)
{

if(pivot->data > temp->data)
{
if(temp->link==0)
{
temp->prev->link=0;
temp->link=pivot;
pivot->prev->link=temp;
temp->prev=pivot->prev;

break;
}
else
{
p=pivot->prev;
temp=temp->link;
temp->prev->link=pivot;
temp->prev->prev->link=temp;
pivot->prev=temp->prev;
temp->prev=temp->prev->prev;
pivot->prev->prev=p;
pivot->prev->prev->link=pivot->prev;

}
}

else
temp=temp->link;
}
pivot=pivot->link;
}
printf("\n first=%d\n",first->data);
return(first);
}


int count(node *first)
{
node *save=first;
int n=0;
while(save!=0)
{
n++;
save=save->link;
}
return(n);
}

keerthika said...

i want to write a program to sort weather condition for past 3 years for 5 cities using multi dimenstional arrays......

Anonymous said...

any one can know the program ...you please explain that....

siree said...

can u explain this program

Anonymous said...

easy to understand

Anonymous said...

it cant work....

ravi jadhav said...

#include
#include
void quick_sort(int*,int,int);
int partision(int*,int,int);
void main()
{
int i,n,j,a[50],lower=0,upper;
clrscr();
printf("Enter the size of an array=");
scanf("%d",&n);
upper=n-1;
printf("Enter the array elements=");

for(i=0;ilower)
{
i= partision(a,lower,upper);
quick_sort(a,lower,i-1);
quick_sort(a,i+1,upper);
}
}
int partision(int a[],int lower,int upper)
{
int i,p,q,temp;
p=lower+1;
q=upper;
i=a[lower];
while(q>=p)

{

while(a[p]i)

{

q--;
}
if(q>p)

{
temp=a[p];
a[p]=a[q];
a[q]=temp;
}
}
temp=a[lower];
a[lower]=a[q];
a[q]=temp;
return q;
}

varun kaulwar said...

void main()
{
char c=125;
pritnf("%d",c);
}

C compiler: gcc 4.1.2