冒泡排序算法(2)

目录

 

冒泡排序算法原理

冒泡排序算法的使用场景

冒泡排序算法的实现

冒泡排序算法的运行结果


  • 冒泡排序算法原理

冒泡排序就是重复“从序列右边开始比较相邻两个数字的大小,再根据结果交换两个数字的位置”这一操作的算法。在这个过程中,数字会像泡泡一样,慢慢从右往左“浮”到序列的顶端,所以这个算法才被称为“冒泡排序”。在冒泡排序中,第1轮需要比较n-1次,第2轮需要比较n-2次……第n-1轮需要比较1次。因此,总的比较次数为(n-1)+(n-2)+…+1≈n2/2。这个比较次数恒定为该数值,和输入数据的排列顺序无关。不过,交换数字的次数和输入数据的排列顺序有关。假设出现某种极端情况,如输入数据正好以从小到大的顺序排列,那么便不需要任何交换操作;反过来,输入数据要是以从大到小的顺序排列,那么每次比较数字后便都要进行交换。因此,冒泡排序的时间复杂度为O(n2)

  • 冒泡排序算法的使用场景

 

  • 冒泡排序算法的实现

//描述:冒泡排序算法
//参数:@piArray 待排序的数组数据
//		@iNum 数组个数
//返回:无
void BubbleSort(int *piArray, int iNum)
{
	int i, j, tmp;
	char info[128];

	Printf("Sort before:", piArray, iNum);
	printf("\n\n");
	for (i=0; i<iNum-1; i++)
	{
		for (j=0; j<iNum-1-i; j++)
		{
			if (piArray[j] < piArray[j+1])
			{
				tmp = piArray[j];
				piArray[j] = piArray[j+1];
				piArray[j+1] = tmp;
			}
		}
		memset(info, 0, sizeof(info));
		sprintf(info, "\nOrder number %02d:", i);
		Printf(info, piArray, iNum);
	}
	printf("\n\n");
	Printf("Sort after:", piArray, iNum);
}

int main(int argc, char *argv[])
{
	int iArray[] ={10, 23, 65, -101, 999, 10000};

	BubbleSort(iArray, sizeof(iArray)/sizeof(iArray[0]));

	system("pause");
	return 0;
}
  • 冒泡排序算法的运行结果

标题

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值