#include <stdio.h>
void bubble_sort( int a[], int n )
{
int i , j;
int temp , flag = 1;
for( i =1; i < n && flag ; i++ )
{
flag = 0;
for( j = 0; j < n - i; ++j )
{
if( a[j] > a[j + 1] )
{
flag = 1;
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
}
void shell_sort( int a[], int n, int d[], int numofd )
{
int m, span;
int k, i ,j;
int temp;
for( m = 0; m < numofd; m++ )
{
span = d[m];
for( k = 0; k< span; ++k )
{
for( i = k; i < n - span; i += span )
{
temp = a[ i + span ];
j = i;
while( j > -1 && temp < a[j] )
{
a[j + span] = a[j];
j = j - span;
}
a[ j + span] = temp;
}
}
}
}
void quick_sort( int a[], int low, int high )
{
int i = low, j = high;
int temp = a[low];
while( i < j )
{
while( i < j && temp <= a[j] ) j--;
if( i < j )
{
a[i] = a[j];
i++;
}
while( i < j && temp > a[i] ) i++;
if( i < j )
{
a[j] = a[i];
j--;
}
}
a[i] = temp;
if( low < i ) quick_sort( a, low, i-1 );
if( i < high ) quick_sort( a , j+1, high );
}
//直接选择排序
void select_sort( int a[], int n )
{
int i, j, temp;
int small;
for( i = 0; i < n -1; i++ )
{
small = i;
for( j = i + 1; j < n; j++ )
if( a[j] < a[small] )
small = j;
if( small != i )
{
temp = a[small];
a[small] = a[i];
a[i] = temp;
}
}
}
void main()
{
int k , n;
int d[] = { 6, 3,1 };
int a[] = { 9,6,4,3,9,23,10 };
n = sizeof( a ) / sizeof( int );
printf( "n = %d\n",n );
//bubble_sort( a, n);
//shell_sort( a, n ,d ,3);
//quick_sort( a, 0, n-1 );
select_sort( a, n );
for( k = 0; k< n; k++ )
printf( "%d ", a[k] );
}
直接选择排序
最新推荐文章于 2025-09-11 20:22:26 发布