冒泡排序实现

/* 此程序用于实现冒泡排序
 * 作者:zhy
 * 时间:2021/7/20
 */

#include <stdio.h>
#include <stdlib.h>

// 使用双重循环实现
// array是待排序数组的首地址,len参数是需要排序的元素个数
void bubblesort1(int *array,int len);

// 使用递归实现(单层递归)
// array是待排序数组的首地址,len参数是需要排序的元素个数
void bubblesort2(int *array,int len);

void showarray(int *array,int len);

int main(int argc,char *argv[])
{
	int array[] = {44,3,38,5,47,15,36,26,27,2,46,4,19,50,48};
	showarray(array,sizeof(array)/sizeof(int));

	bubblesort1(array,sizeof(array)/sizeof(int));
	showarray(array,sizeof(array)/sizeof(int));

	bubblesort2(array,sizeof(array)/sizeof(int));
	showarray(array,sizeof(array)/sizeof(int));

	return 0;
}

void bubblesort1(int *array,int len)
{
	if (len < 2) return;

	int ii;		// 排序趟数
	int jj;		// 每趟排序的元素位置下标

	for (ii = len -1;ii > 0;ii--)
	{
		for (jj = 0;jj < ii;jj++)
		{
			if (array[jj] > array[jj + 1])
			{
				array[jj] += array[jj + 1];
				array[jj + 1] = array[jj] - array[jj + 1];
				array[jj] -= array[jj +1];
			}
		}

	}
}

void bubblesort2(int *array,int len)
{
	if (len<2) return; // 数组小于2个元素不需要排序。

	int  ii;	// 每趟排序的元素位置下标
	for (ii = 0;ii < len - 1;ii++)
	{
		if (array[ii] > array[ii + 1])
		{
			array[ii] += array[ii + 1];
			array[ii + 1] = array[ii] - array[ii + 1];
			array[ii] -= array[ii +1];
		}
	}

	bubblesort2(array,--len);
}

void showarray(int *array,int len)
{
	for (int i = 0;i< len;i++)
	{
		printf ("%d ",array[i]);
	}
	printf("\n");
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值