Java教程

测试冒泡算法优化后的效率对比

本文主要是介绍测试冒泡算法优化后的效率对比,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
# include <assert.h>

//冒泡排序
void BubbleSort1(int* arr, int len)
{
	int tmp;
	for (int i = 0; i < len - 1; i++)
	{
		for (int j = 0; j + 1 < len - i; j++)
		{
			if (arr[j] > arr[j + 1])
			{
				tmp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = tmp;
			}
		}
	}
}
// 冒泡排序的优化
void BubbleSort(int* arr, int len)
{
	int tmp;
	bool flg;//标记是否有交换数据

	for (int i = 0; i < len - 1; i++)
	{
		flg = false;
		for (int j = 0; j + 1 < len - i; j++)
		{
			if (arr[j] > arr[j + 1])
			{
				tmp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = tmp;
				flg = true;
			}
		}
		if (!flg)//没有交换数据则排序已经完成
		{
			return;
		}
	}
}
void Show(const int* arr, int len)
{
	for (int i = 0; i < len; i++)
	{
		printf("%d ", arr[i]);
	}
}
int main()
{
	int n;
	printf("请输入要排序的随机数个数\n");
	scanf_s("%d", &n);

	int* p = (int*)malloc(n * sizeof(int));
	assert(p != NULL);
	srand((unsigned)time(NULL));
	for (int i = 0; i < n; i++)
	{
		p[i] = rand()%100;
	}

	clock_t start = clock();
	BubbleSort(p,n);
	clock_t end = clock();
	printf("使用冒泡排序花费了 %d  ms.\n", end - start);


	clock_t start2 = clock();
	BubbleSort1(p,n);
	clock_t end2 = clock();
	printf("使用优化后的冒泡花费了 %d ms.\n", end2 - start2);
	free(p);
	return 0;
}

对比了10组50000个随机数的排序有如下结果

第一组
使用冒泡排序花费了 6488  ms.
使用优化后的冒泡花费了 3169 ms.
第二组
使用冒泡排序花费了 6401  ms.
使用优化后的冒泡花费了 3160 ms.
第三组
使用冒泡排序花费了 6371  ms.
使用优化后的冒泡花费了 3172 ms.
第四组
使用冒泡排序花费了 6398  ms.
使用优化后的冒泡花费了 3140 ms.
第五组
使用冒泡排序花费了 6404  ms.
使用优化后的冒泡花费了 3136 ms.
第六组
使用冒泡排序花费了 6416  ms.
使用优化后的冒泡花费了 3168 ms.
第七组
使用冒泡排序花费了 6401  ms.
使用优化后的冒泡花费了 3165 ms.
第八组
使用冒泡排序花费了 6392  ms.
使用优化后的冒泡花费了 3153 ms.
第九组
使用冒泡排序花费了 6402  ms.
使用优化后的冒泡花费了 3166 ms.
第十组
使用冒泡排序花费了 6432  ms.
使用优化后的冒泡花费了 3172 ms.

由此可知 优化后的冒泡排序大大提升了效率

 

这篇关于测试冒泡算法优化后的效率对比的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!