直接交换排序

直接选择排序,也称冒泡排序思想:第一趟排序:首先将第一个记录的关键字和第二个记录的关键字比较,若为逆序,则将两个记录交换之,然后比较第二个和第三个的关键字。以此类推,直至第n-1个记录和第n个记录关键字比较为止。该过程为第一趟排序,使得最大的关键字排到了最后面。第二趟排序:对前n-1个记录进行相同操作,完成后使得次大的关键字排在n-1位置上。以此类推,进行第三、四次排序直到排序结束。判断排序结束条件是:在一趟排序过程中没有发生过交换记录的操作。一般第i趟排序是从第1个元素到(n-i+1)个记录依次比较相邻两个记录关键字,并在逆序时交换记录。

#define TRUE 1
#define FLASE 0

void directSwapSort(int *data,int count);

void directSwapSort(int *data,int count) {
	int j;
	int hasSwapped;
	int lastSwappedIndex;
	int endIndex = count - 1;
	int tmp;

	while(endIndex > 0) {
		lastSwappedIndex = 0;
		hasSwapped = FLASE;
		for(j = 0;j < endIndex;j++){
			if(data[j] > data[j-1]) {
				tmp = data[j];
				data[j] = data[j+1];
				data[j+1] = tmp;
				hasSwapped = TRUE;
				lastSwappedIndex = j;
			}
		}
		if(FLASE == hasSwapped) {
			return;
		}
		endIndex = lastSwappedIndex;
	}
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值