go实现冒泡排序算法
目录
- 1、基本思想
- 2、算法步骤
- 第一轮开始排序:
- 第二轮开始排序:
- 第三轮开始排序:
- 第四轮开始排序:
- 3、算法实现
1、基本思想
通过对待排序序列从后向前,依次比较相邻元素的排序码,若发现逆序则交换,使排序码较小的元素从后部移向前部,就像水底气泡一样逐渐向上冒。
通俗点说就是:数组中前一个元素和后一个元素进行比较如果大于或者小于前者就进行交换,最终返回最大或者最小都冒到数组的最后序列时间复杂度为O(n^2).
比较的次数为:
从比较次数上可以看出,是一个平方级别的时间复杂度;
冒泡排序算法是稳定的,如果两个相邻的元素相等,是不会交换的,可以保证了稳定性的要求。
2、算法步骤
例如数组
{23,45,13,67,35}
让前面的数和后面的数进行比较,如果前面的数大,则交换。
第一轮开始排序:
第一轮开始迭代,从第一个数开始,依次比较相邻的两个数,如果前一个数比后面一个数大,那么交换位置,直到处理最后一个数,最后一个数即为最大值。
第二轮开始排序:
第二轮开始迭代,重复上述步骤,得出倒数第二大的数;
第三轮开始排序:
第三轮开始迭代,重复上述操作,得到倒数第三大的值;
第四轮开始排序:
第四轮开始迭代,重复上述操作,得到倒数第四大的值;
3、算法实现
package main import "fmt" func BubbleSort(arr []int)[]int{ for i := 0; i<len(arr) - 1; i++{ for j:= 0; j<len(arr)-1-i; j++{ if arr[j] > arr[j+1]{ arr[j],arr[j+1] = arr[j+1],arr[j] } } } return arr } func main(){ arr := []int{23,45,13,67,35} fmt.Println(BubbleSort(arr)) }
结果展示:
到此这篇关于go实现冒泡排序算法的文章就介绍到这了,更多相关go 冒泡排序内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
相关推荐
-
go实现冒泡排序的示例代码
冒泡排序: (Bubble Sorting)基本思想是通过对待排序序列从后向前(从下标较大的元素开始)以此比较相邻元素的排序码,若发现逆序则交换,使排序码较小的元素逐渐从后补移向前部(从下标较大的单元移向单位较小的单元),就像水底的气泡一样逐渐向上冒. 因为排序的过程中,各元素不断的接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在排序过程中设置一个标志flag判断元素是否进行过交换,从而减少不必要的比较(优化). BubleSort.go package main; im
-
GOLANG版的冒泡排序和快速排序分享
//冒泡排序 func mpSort(array []int) { for i:=0;i<len(array);i++ { for j:=0;j<len(array)-i-1;j++ { if array[j] > array[j+1] { array[j], array[j+1] = array[j+1], array[j] } } } } //快速排序 func quickSort(array []int, left int, right int) { if left < ri
-
Go语言实现冒泡排序、选择排序、快速排序及插入排序的方法
本文实例讲述了Go语言实现冒泡排序.选择排序.快速排序及插入排序的方法.分享给大家供大家参考.具体分析如下: 算法是程序的灵魂,而排序算法则是一种最基本的算法.排序算法有许多种,这里介绍4中排序算法:冒泡排序,选择排序,快速排序和插入排序,以从小到大为例. 一.冒泡排序 冒泡排序的原理是,对给定的数组进行多次遍历,每次均比较相邻的两个数,如果前一个比后一个大,则交换这两个数.经过第一次遍历之后,最大的数就在最右侧了:第二次遍历之后,第二大的数就在右数第二个位置了:以此类推. 复制代码 代码如下:
-
JS实现最简单的冒泡排序算法
1. 算法步骤 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.这步做完后,最后的元素会是最大的数. 针对所有的元素重复以上的步骤,除了最后一个. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较. 2. 动图演示 3. 什么时候最快 当输入的数据已经是正序时(都已经是正序了,我还要你冒泡排序有何用啊). 4. 什么时候最慢 当输入的数据是反序时(写一个 for 循环反序输出数据不就行了,干嘛要用你冒泡排序呢
-
php数组冒泡排序算法实例
本文实例讲述了php数组冒泡排序算法.分享给大家供大家参考,具体如下: <?php /*@冒泡排序算法 */ $array=array(5,45,22,11,32,28,35,56,17,21,92); $len=count($array);//计算数组长度 for($i=0;$i<$len-1;$i++){//需要比较$len-1轮,每一轮需要比较$len-1次 for($j=0;$j<$len-1;$j++){//需要比较$len-1次,因为循环到最后一个数时,后面没有数可以比较了,
-
c# 冒泡排序算法(Bubble Sort) 附实例代码
冒泡排序(Bubble Sort) 冒泡排序算法的运作如下: 1.比较相邻的元素.如果第一个比第二个大,就交换他们两个.2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数.3.针对所有的元素重复以上的步骤,除了最后一个.4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较. 平均时间复杂度 复制代码 代码如下: /// <summary> /// 冒泡排序 /// </summary> /// <param
-
C语言 冒泡排序算法详解及实例
C语言 冒泡排序算法 冒泡排序(Bubble Sort)是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成.这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端. 冒泡排序对n个项目需要O(n2)的比较次数,且可以原地排序.尽管这个算法是最简单了解和实作的排序算法之一,但它对于少数元素之外的数列排序是很没有效率的. 冒泡排序是与插入排序拥有相等的执
-
用java实现冒泡排序算法
冒泡排序的算法分析与改进 交换排序的基本思想是:两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止. 应用交换排序基本思想的主要排序方法有:冒泡排序和快速排序. 复制代码 代码如下: public class BubbleSort implements SortUtil.Sort{ public void sort(int[] data) { int temp; for(int i=0;i<data.length;i++){ for(int j=data.le
-
Java实现的各种排序算法(插入排序、选择排序算法、冒泡排序算法)
一.插入排序算法实现java版本 public static int[] insert_sort(int[] a) { for (int i = 0; i < a.length; i++) { for(int j=i+1;j>0&&j<a.length;j--) { if(a[j]<a[j-1]) { int tmp = a[j]; //这样定义初始化逻辑上是可以的,j变量,每次tmp的值变化的 a[j] = a[j-1]; a[j-1] = tmp; } } }
-
java 合并排序算法、冒泡排序算法、选择排序算法、插入排序算法、快速排序算法的描述
算法是在有限步骤内求解某一问题所使用的一组定义明确的规则.通俗点说,就是计算机解题的过程.在这个过程中,无论是形成解题思路还是编写程序,都是在实施某种算法.前者是推理实现的算法,后者是操作实现的算法. 一个算法应该具有以下五个重要的特征: 1.有穷性: 一个算法必须保证执行有限步之后结束: 2.确切性: 算法的每一步骤必须有确切的定义: 3.输入:一个算法有0个或多个输入,以刻画运算对象的初始情况: 4.输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果.没有输出的算法是毫无意义的:
-
java实现的冒泡排序算法示例
本文实例讲述了java实现的冒泡排序算法.分享给大家供大家参考,具体如下: public class PaoPaixu { public static void sort(int[] data){ int tmp; for (int i = 0; i < data.length; i++) { for (int j = i+1; j < data.length; j++) { if(data[i]>data[j]){ /*tmp=data[i]; data[i]=data[j]; dat
-
利用python实现冒泡排序算法实例代码
冒泡排序 冒泡排序(英语:Bubble Sort)是一种简单的排序算法.它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成.这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端. 冒泡排序算法的运作如下: 1.比较相邻的元素.如果第一个比第二个大(升序),就交换他们两个. 2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.这步做完后,最后的元素会是最大的数.
-
C++实现双向冒泡排序算法
本文实例为大家分享了C++实现双向冒泡排序算法的具体代码,供大家参考,具体内容如下 一.概念(来源于百度百科) 传统冒泡算法原理 冒泡排序算法的运作如下:(从后往前) 1.比较相邻的元素.如果第一个比第二个大,就交换他们两个. 2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数. 3.针对所有的元素重复以上的步骤,除了最后一个. 4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较. 双向冒泡算法原理 双向冒泡排序算法的运作如
随机推荐
- wenserver获取天气预报数据实例分享
- 如何清除IE10+ input X 文本框的叉叉和密码输入框的眼睛图标
- js 生成密匙流 脚本代码
- ASP.NET配置文件Web.config用法详解
- 方便的大家admin及admin888 经过 md5加密后16位和32位代码
- C++二叉树结构的建立与基本操作
- CentOS系统中PHP和MySQL的升级方法
- Ajax request response 乱码解决方法
- Jquery选择器 $实现原理
- javascript基础知识之html5轮播图实例讲解(44)
- 关于jQuery参考实例2.0 用jQuery选择元素
- serv_u 简易教程
- Java中使用COS实现文件上传功能
- 详解Android App中使用VideoView来实现视频播放的方法
- Java是自学好还是参加培训班好?
- struts2 validation.xml 验证规则代码解析
- OpenResty中正则模式匹配的2种方法详解
- Android 接收推送消息跳转到指定页面的方法
- django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
- Java使用反射调用方法示例