直接选择排序

#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] );
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值