You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

58 lines
1.6 KiB
C

/* Program to demonstrate MODIFIED bubble sort */
#include <stdio.h>
#include <conio.h>
void bubble(int x[ ], int n) ;
void show(int x[ ], int n) ;
void main()
{
int i, n, x[20] ;
clrscr() ;
printf("Enter the number of elements: ") ;
scanf("%d",&n) ;
printf("Enter the elements:\n") ;
for(i=0 ; i<n ; i++)
scanf("%d",&x[i]) ;
bubble(x,n) ;
printf("Sorted array is as shown:\n") ;
for(i=0 ; i<n ; i++)
printf("%d ", x[i]) ;
getch() ;
}
void bubble(int x[ ], int n)
{
int i, j, temp ;
int flag=1 ;
for(i=0 ; i<n-1&&flag==1 ; i++)
{
flag=0 ;
for(j=0 ; j<n-1-i ; j++)
if(x[j]>x[j+1])
{
temp=x[j] ;
x[j]=x[j+1] ;
x[j+1]=temp ;
flag=1 ;
}
show(x,n) ;
}
}
/* For descending order use x[j]<x[j+1] instead of x[j]>x[j+1] */
/* This is modified bubble sort. There is something called classical bubble sort also.
Modified bubble sort has the ability to terminate the function earlier if the array gets sorted before reaching the last pass.
To convert modified bubble sort to classical bubble sort, just remove all the statements related with flag */
void show(int x[ ], int n)
{
int i ;
for(i=0 ; i<n ; i++)
printf("%d ", x[i]) ;
printf("\n\n") ;
}
/* The method show() is optional. It is written to show output of each pass. It may not be written in theory exam. It is required only in practical exams */