ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

冒泡排序

2022-03-09 09:01:30  阅读:164  来源: 互联网

标签:12 23 冒泡排序 34 89 67 排序


冒泡排序
排序的基本概念
排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。分内部排序和外部排序,若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序。反之,若参加排序的记录数量很大,整个序列的排序过程不可能在内存中完成,则称此类排序问题为外部排序。内部排序的过程是一个逐步扩大记录的有序序列长度的过程。 。
排序的基本概念
排序前 12 85 96 45 88 13 64 63
排序后(升序)  12 13 45 63 64 85 88 96
排序后 (降序) 96 88 85 64 63 45 13 12
常见排序算法
快速排序、希尔排序、堆排序、直接选择排序不是稳定的排序算法,而基数排序、冒泡排序、直接插入排序、折半插入排序、归并排序是稳定的排序算法。
排序的基本概念
稳定排序:假设在待排序的文件中,存在两个或两个以上的记录具有相同的关键字,在用某种排序法排序后,若这些相同关键字的元素的相对次序仍然不变,则这种排序方法是稳定的。其中冒泡,插入,基数,归并属于稳定排序,选择,快速,希尔,堆属于不稳定排序。
第一次冒泡过程
[23 89 34 12 34 67 90 43]
两两比较相邻两数的大比如果逆序进行交换
[23 89 34 12 34 67 90 43]
[23 34 89 12 34 67 90 43]
[23 34 12 89 34 67 90 34]
[23 34 12 34 89 67 90 34]
[23 34 12 34 67 89 90 34]
[23 34 12 34 67 89 34] 90
第二次冒泡过程
[23 34 12 34 67 89 34] 90
[]两两比较相邻两数的大比如果逆序进行交换
[23 34 12 34 67 89 34] 90
[23 12 34 34 67 89 34] 90
[23 12 34 34 67 89 34] 90
[23 12 34 34 67 89 34] 90
[23 12 34 34 67 89 34] 90
[23 12 34 34 67 34]89 90
代码:

#include<iostream>
using namespace std;
int a[1000];
int n;
int main()
{
	cin>>n;
	for (int i=0;i<n;i++)
	{
		cin>>a[i];
	}
	for (int i=0;i<n;i++)
	{
		for(int j=0;j<n-i-1;j++)
		{
			if (a[j]>a[j+1])
			{
				swap(a[j],a[j+1]);
			}		
		} 
	}
	for (int i=0;i<n;i++)
	{
		cout<<a[i]<<" ";
	}
}
/*
8
2 1 3 4 5 6 7 90

8
23 89 34 12 34 67 90 43
*/ 

  


思考
要进行几次冒泡过程?
每次冒泡的范围是什么?
如果进行优化?
时间复杂度O(n2)
当有序时改进的冒泡排序的时间复杂度为O(n)。
当反序时改进的冒泡排序的时间复杂度为O(n2)
基本思想
一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
算法稳定性
冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。所以,如果两个元素相等,我想你是不会再无聊地把他们俩交换一下的;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法。

标签:12,23,冒泡排序,34,89,67,排序
来源: https://www.cnblogs.com/smghj/p/15983458.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有