快速排序
直接插入排序
希尔排序
简单选择排序
堆排序
冒泡排序
归并排序
基数排序
1快速排序
#include <stdio.h>
void QuickSort ( int * a, int start, int end)
{
int x = start;
int y = end;
int base = a[ x] ;
if ( x >= y)
{
return ;
}
while ( x < y)
{
while ( a[ y] > base && x < y)
{
y-- ;
}
if ( x < y)
{
a[ x++ ] = a[ y] ;
}
while ( a[ x] < base && x < y)
{
x++ ;
}
if ( x < y)
{
a[ y-- ] = a[ x] ;
}
}
a[ x] = base;
QuickSort ( a, start, x - 1 ) ;
QuickSort ( a, x + 1 , end) ;
}
int main ( )
{
int i;
int array[ 100000 ] = {
0 } ;
srand ( time ( NULL ) ) ;
for ( i = 0 ; i < 100000 ; i++ )
{
array[ i] = rand ( ) % 1000 + 1 ;
}
QuickSort ( array, 0 , sizeof ( array) / sizeof ( array[ 0 ] ) - 1 ) ;
for ( i = 0 ; i < sizeof ( array) / sizeof ( array[ 0 ] ) ; i++ )
{
printf ( "%d " , array[ i] ) ;
}
printf ( "\n" ) ;
return 0 ;
}
2直接插入排序
#include <stdio.h>
void InsertSort ( int * a, int length)
{
int i, j, tmp;
for ( i = 1 ; i < length; i++ )
{
tmp = a[ i] ;
for ( j = i - 1 ; j >= 0 ; j-- )
{
if ( tmp < a[ j] )
{
a[ j + 1 ] = a[ j] ;
}
else
{
break ;
}
}
a[ j + 1 ] = tmp;
}
}
int main ( )
{
int i;
int array[ 10000 ] = {
0 } ;
srand ( time ( NULL ) ) ;
for ( i = 0 ; i < 10000 ; i++ )
{
array[ i] = rand ( ) % 1000 + 1 ;
}
InsertSort ( array, sizeof ( array) / sizeof ( array[ 0 ] ) ) ;
for ( i = 0 ; i < sizeof ( array) / sizeof ( array[ 0 ] ) ; i++ )
{
printf ( "%d " , array[ i] ) ;
}
printf ( "\n" ) ;
return 0 ;
}
3希尔排序