Sir, do I have passed the exam?
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void bubble_sort( int a[], size_t n )
{
int sorted = 1;
for ( size_t i = 0; sorted && ++i < n; )
{
sorted = !( a[i] < a[i-1] );
}
if ( sorted )
{
puts( "The array is already sorted" );
return;
}
while ( !sorted && 1 < n-- )
{
int *prev = a, *next = a;
sorted = 1;
for ( size_t i = 0; i < n; ++i )
{
++next;
if ( *next < *prev )
{
int tmp = *prev;
*prev = *next;
*next = tmp;
sorted = 0;
}
++prev;
}
}
}
#define N 10
int main( void )
{
int a[N] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } ;
for ( size_t i = 0; i < N; i++ ) printf( "%d ", a[i] );
printf( "\n" );
bubble_sort( a, N );
for ( size_t i = 0; i < N; i++ ) printf( "%d ", a[i] );
printf( "\n\n" );
srand( ( unsigned int )time( NULL ) );
for ( size_t i = 0; i < N; i++ ) a[i] = rand() % N;
for ( size_t i = 0; i < N; i++ ) printf( "%d ", a[i] );
printf( "\n" );
bubble_sort( a, N );
for ( size_t i = 0; i < N; i++ ) printf( "%d ", a[i] );
printf( "\n" );
}
The program output might look like
0 1 2 3 4 5 6 7 8 9
The array is already sorted
0 1 2 3 4 5 6 7 8 9
5 2 8 6 4 3 8 6 6 5
2 3 4 5 5 6 6 6 8 8