C语言实现冒泡排序

C语言实现冒泡排序,第1张

C语言实现冒泡排序

以升序为例,外层循环为趟数,共n-1趟(n为数组长度)。每一趟从第一个元素开始,与下一个元素比较。对于某个元素若大于下一元素,则交换。这样第一趟必然得到最大元素,即最大元素归位;第二趟必然得到第二大元素,即第二大元素归位…所以每趟只需比较n-(i+1)次,因为最大的i+1个已经归位。每次都将没排好的最大排好,故称冒泡排序

#include 

//冒泡排序法
void main()
{
	int arr[] = {89,61,55,36,35,10,1};
	int temp = 0;
	int n = 6;
	for (int i = 0; i < n-1; i++)		//外层循环为趟数
	{
		for (int j = 0; j < n - i - 1; j++)
		{
			if (arr[j] > arr[j + 1])
			{
				temp = arr[j];
				arr[j] = arr[j+1];
				arr[j + 1] = temp;
			}
		}
		printf("第%d趟结果:",i);
		for (int k=0;k<7;k++)
		{
			printf("%d  ",arr[k]);
		}
		printf("n");
	}
}

时间复杂度分析:第 i 趟需要比较 n-(i+1) 次,共n-1趟(i从0到n-1)。总共需要比较(n-1)n/2次。故时间复杂度为O(n^2)。

算是重拾冒泡排序法吧,今年已经大三了。大一就学了冒泡排序,那时应是一知半解,或者说曾经懂过。当时理解了后,为了快,就像背公式一样背下来了。时隔两年,再想着使用时,发现已经不会,而网上的冒泡排序C语言也有很多种,一时不知哪个是正确的。乃重拾原理,记于此,不相忘。

参考博客:https://blog.csdn.net/qq_39741605/article/details/80821595

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5114904.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-17

发表评论

登录后才能评论

评论列表(0条)

保存