1、什么是冒泡排序?
冒泡排序的英文Bubble Sort,是一种最基础的交换排序。之所以叫做冒泡排序,因为每一个元素都可以像小气泡一样,根据自身大小一点一点向数组的一侧移动。
冒泡排序的原理:
每一趟只能确定将一个数归位。即第一趟只能确定将末位上的数归位,第二趟只能将倒数第 2 位上的数归位,依次类推下去。如果有 n 个数进行排序,只需将 n-1 个数归位,也就是要进行 n-1 趟操作。
而 “每一趟 ” 都需要从第一位开始进行相邻的两个数的比较,将较大的数放后面,比较完毕之后向后挪一位继续比较下面两个相邻的两个数大小关系,重复此步骤,直到最后一个还没归位的数。
2、冒泡排序到底是如何排序的呢?
下面通过一个动图来看一看冒泡排序到底是怎么样移动的
具体是如何移动的呢?这里参考了(帅地的冒泡排序)
(1)起始时,左下标指向第一个石子,右下标指向第二个石子,然后比较
(2)然后左右下标同时向右移动,再次比较
(3)第一趟结束之后,最大的石子就移动到了最右边
(4)接下来就从剩下 3 个没排好序的石子中继续选出最大的,规则和上面一样
(5)下面给出这 4 个石子完整的演示过程
3、时间复杂度
4 个石子的时候排完序需要 3 趟,第一趟需要比较3次,第二趟需要比较2次,第三趟需要比较1次,那一共比较了 3 + 2 + 1 次;
那如果有 n 个石子呢?
那就需要 (n-1) + (n-2) +…+2+1 次,这不就是一个等差数列吗,很显然:
根据复杂度的规则,去掉低阶项(也就是 n/2),并去掉常数系数,那复杂度就是 **O(n^2)**了;
冒泡排序也是一种稳定排序,因为在两个数交换的时候,如果两个数相同,那么它们并不会因为算法中哪条语句相互交换位置。
搜索
复制
标签:石子,冒泡排序,第一趟,归位,排序,比较 来源: https://www.cnblogs.com/beimu123/p/16347437.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。