排序:冒泡、插入、选择三体合一

#include <stdio.h>

#define N 10
#define Item int
#define less(A,B) (A<B)
#define eq(A,B) (!less(A,B) && !less(B,A))
//#define swap(A,B) {Item t;t = A; A = B;B = t;}
#define swap(A,B) {A = A^B; B = A^B; A = A^B;}
#define compswap(A,B) if(less(A,B))swap(A,B);

/*********************** bubble sort method ***************************/
Item* bubble(Item* a,int n)
{
	int i,j;
	for(i = 0;i<N;i++)
		for(j = i;j<N;j++)
			compswap(a[j],a[i]);

	return a;
}

/*********************** insert sort method  **************************/
Item* insert(Item* a,int n)
{
	int i,j;
	Item key,temp;
	for(i = 1;i<N;i++)
	{	
		key = *(a+i);
		j = i-1;
		while(j>=0)
		{
			if(*(a+j)>key)
			swap(*(a+j),*(a+j+1));
			j--;
		}
	}
	return a;
}			

/*********************** select sort method  **************************/
Item* select(Item* a,int n)
{
	int i,j,k;
	for(i = 0;i<N;i++)
	{
		k = i;
		for(j = i+1;j<N;j++)
			if(a[j]<a[k])
			k = j;
		if(i != k)
			swap(a[k],a[i]);
	}
	return a;
}


int main(int argc,char *argv[])
{
	int i;
	Item a[N] = {'a','c','e','f','h','k','i','j','d','b'};

	printf("Before:\n");
	for(i = 0; i<N; i++)
		printf("%d, ",a[i]);
	printf("\n");

	//Item* b = bubble(a,N);
	Item* b = insert(a,N);
	//Item* b = select(a,N);
		
	printf("After:\n");
	for(i = 0; i<N; i++)
		printf("%d, ",b[i]);
	printf("\n");

	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值