摘要:冒泡排序的基本思路就是相邻的两个数相比,如果前一个数比后一个数大小就交换,把大小的数放在后面。
冒泡排序可以说是我们高中的时候就开始接触的排序方法了吧,这种排序的方法的思路比较简单,不过有一定的局限性————就是在对大量的数据进行排序时,这种方法会比较蹩脚。因此,人们才会不断的想方法去改进这种方法,后来的选择排序就是冒泡排序的改进版。
冒泡排序的基本思路就是相邻的两个数相比,如果前一个数比后一个数大(小)就交换,把大(小)的数放在后面。
这种方法在排序好之前,每次对比的起点都是在第一个元素,同时每次排序又会有N个元素,即会对比N-1次,因此总的对比次数就为N(N-1),因此这个排序的时间复杂度为O(N^2)。
这是一种稳定的排序。(因为这个排序比较简单,就不画图啦)
代码实现如下:
public static void bubbleSort(int[] nums) { if(nums == null || nums.length < 2) return; int length = nums.length; int end = length - 1; for(int j = 0; j < end; j++) { for(int i = 0; i < end; i++) { //如果前一个数比后一个数大,两数交换 if(nums[i] > nums[i+1]) { int temp = nums[i]; nums[i] = nums[i+1]; nums[i+1] = temp; } } //把最大的数放到end位置 end--; } }
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/71312.html
摘要:冒泡排序一种运行效率很低的排序算法,然而虽然排序效率低,确实排序入门很重的算法,因为冒泡排序的思路是最简单最容易理解的排序算法了。二冒泡排序定义冒泡排序是一种通过两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止的交换排序。 一、前言 相信大部分同学都已经学过数据结构与算法这门课了,并且我们可能都会发现一个现象就是我们所学过的数据结构与算法类的书籍基本都是使用 C 语言来...
摘要:多练练排序算法,不仅能够让我们知道一些排序方法的底层实现细节,更能够锻炼我们的思维,提升编程能力。排序算法的稳定性一个稳定的排序,指的是在排序之后,相同元素的前后顺序不会被改变,反之就称为不稳定。 1. 导言 因为这是排序算法系列的第一篇文章,所以多啰嗦几句。 排序是很常见的算法之一,现在很多编程语言都集成了一些排序算法,比如Java 的Arrays.sort()方法,这种方式让我们可...
摘要:外层循环让内层循环继续排没有排序过的数组,排序过的不用再排。那么优化后的算法能快多少呢。我们都以数组长度为来计算传统冒泡排序步,优化后的冒泡排序步。因为优化后的冒泡排序,每排完一次,最后一个数已经是最大的,就不需要再比较了。 冒泡排序的时间用大O表示法是O(N^2). 传统的冒泡排序: /** * @param total 要排序的数组长度 */ public void sort(in...
摘要:插入排序特殊从第二个元素开始,和第一个元素比较,如果满足排序的顺序,则交换顺序。优化后选择排序从第一个位置开始遍历待排序的元素,找到最小值和第一元素交换从位置开始往后遍历,找到之后元素中的最小值,和第个元素交换位置。 插入排序1、特殊:从第二个元素开始,和第一个元素比较,如果满足排序的顺序,则交换顺序。2、一般:把待比较和他之前的所有元素相比(从右往左),如果满足排序的顺序,这交换。 ...
阅读 1863·2021-09-22 15:29
阅读 3352·2019-08-30 15:44
阅读 3561·2019-08-30 15:43
阅读 1764·2019-08-30 13:48
阅读 1490·2019-08-29 13:56
阅读 2475·2019-08-29 12:12
阅读 968·2019-08-26 11:35
阅读 1054·2019-08-26 10:25