冒泡排序是每个编程初学者必学的经典算法。很久没用上,有点遗忘了。写篇博客总结一下。也希望能帮助大家理解冒泡排序。直接上代码。
java版本:
import java.util.Arrays;
/**
* Created by Administrator on 2016/7/30.
*/
public class MpTest {
public static void main(String[] args) {
System.out.println("冒泡排序:小的在左边,大的在右边");
int[] arr = {16, 32, 39, 60, 78, 80};
System.out.println("排序前:"+ Arrays.toString(arr));
boolean flag;
int length = arr.length;
for (int m = 0; m < length - 1; m++) {//控制比的趟数
System.out.println("第"+(m+1)+"趟比较------start");
flag = true;//加入标识,提高效率 如果位置一直是对的就break;
for (int n = 0; n < length -m-1; n++) {//控制每趟比的次数
System.out.print(arr[n]+"和"+arr[n+1]+"比:");
if(arr[n] > arr[n+1]){
System.out.print(arr[n]+"比"+arr[n+1]+"大,");
flag = false;
changePosition(arr, n);
}else{
System.out.println(arr[n]+"比"+arr[n+1]+"小,不用换位置");
}
}
if(flag){
break;
}
System.out.println("第"+(m+1)+"趟比较------end.数组变为:"+ Arrays.toString(arr));
}
System.out.println("排序后:"+ Arrays.toString(arr));
}
private static void changePosition(int[] arr, int n) {
System.out.println(arr[n]+"和"+arr[n+1]+"换位置");
arr[n] = arr[n] + arr[n+1];
arr[n+1] = arr[n] - arr[n+1];
arr[n] = arr[n] - arr[n+1];
}
}
打印的结果:
冒泡排序:小的在左边,大的在右边
排序前:[60, 39, 32, 16, 78, 80]
第1趟比较------start
60和39比:60比39大,60和39换位置
60和32比:60比32大,60和32换位置
60和16比:60比16大,60和16换位置
60和78比:60比78小,不用换位置
78和80比:78比80小,不用换位置
第1趟比较------end.数组变为:[39, 32, 16, 60, 78, 80]
第2趟比较------start
39和32比:39比32大,39和32换位置
39和16比:39比16大,39和16换位置
39和60比:39比60小,不用换位置
60和78比:60比78小,不用换位置
第2趟比较------end.数组变为:[32, 16, 39, 60, 78, 80]
第3趟比较------start
32和16比:32比16大,32和16换位置
32和39比:32比39小,不用换位置
39和60比:39比60小,不用换位置
第3趟比较------end.数组变为:[16, 32, 39, 60, 78, 80]
第4趟比较------start
16和32比:16比32小,不用换位置
32和39比:32比39小,不用换位置
排序后:[16, 32, 39, 60, 78, 80]
第一趟比5次,把最大的排到最右边
第二趟比4次,把第二大的放到正确的位置
。。。
golang版本:
package main
import "fmt"
func main() {
intArr := [...]int{60, 39, 32, 16, 78, 80}
fmt.Println(intArr)
a := len(intArr)
for i := 0; i < a; i++ {
flag := true
for j := 0; j < a-i-1; j++ {
if intArr[j] > intArr[j+1] {
flag = false
intArr[j] = intArr[j] + intArr[j+1]
intArr[j+1] = intArr[j] - intArr[j+1]
intArr[j] = intArr[j] - intArr[j+1]
}
}
if flag {
break
}
}
fmt.Println(intArr)
}
分享到:
相关推荐
在这个“go_基于Golang实现的冒泡排序算法”项目中,我们将深入探讨如何用Golang语言来实现这个经典算法。 首先,冒泡排序的基本思想是:对于未排序的序列,每次遍历都会比较相邻的两个元素,如果它们的顺序错误...
### Go语言冒泡排序案例详解 #### 一、引言 冒泡排序是一种简单的排序算法,在计算机科学领域中被广泛用作教学示例。本文将详细介绍如何使用Go语言实现冒泡排序算法,并通过一个具体的案例来展示其工作原理。本...
本文将探讨两种常见的排序算法——冒泡排序和快速排序,在GOLANG中的实现。 首先,我们来看冒泡排序(Bubble Sort)。冒泡排序是一种简单直观的排序算法,它重复地遍历待排序的数列,一次比较两个元素,如果他们的...
冒泡排序是一种简单的排序算法,它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 部分代码示例...
在这个项目中,你可能会遇到常见的排序算法,如冒泡排序、插入排序、选择排序、快速排序、归并排序、堆排序等。这些排序算法各有优劣,理解它们的工作原理和时间复杂度分析对于优化代码性能至关重要。 3. **查找...
#### 一、冒泡排序 冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的数列,依次比较相邻的两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复进行的,直到没有再需要交换的...
本书将涵盖排序算法(如冒泡排序、插入排序、选择排序、快速排序、归并排序和堆排序)、查找算法(如线性查找、二分查找和哈希查找)、图算法(如深度优先搜索和广度优先搜索)以及动态规划等高级算法。通过学习这些...
在Golang编程中,处理正整数的排序问题是一个常见的挑战。...然而,对于大规模数据,冒泡排序的时间复杂度较高,可能会导致效率较低,可以考虑使用更高效的排序算法,如快速排序、归并排序或插入排序等。
1冒泡排序.go 1冒泡排序_切片做函数参数.go 2猜数字游戏.go 3_1结构体初始化.go 3_2结构体类型添加方法.go 3_3结构体指针.go 3_4值传递与引用传递.go 4_1方法的继承.go 4_2方法的重写.go 5_1接口的定义和...
[第十例 Redis集群连接][十一例 Zookeeper操作][十二例 Kafka操作][十三例 NSQ操作][十四例 二分查找][十五例 交换排序 - 冒泡排序][十六例 插入排序 - 直接插入排序][十七例 插入排序 - 希尔排序][十八例 交换排序 ...
重要算法类型包括排序(如冒泡排序、快速排序、归并排序)、搜索(如二分查找、广度优先搜索、深度优先搜索)、图算法(如Dijkstra算法、Floyd-Warshall算法、最小生成树)和动态规划等。熟练掌握这些算法能够帮助你...
相比于冒泡排序和选择排序,插入排序在内部迭代的次数上是逐渐增大的,而冒泡排序和选择排序随着排序的进行,迭代次数会逐渐减少。 在Golang中实现插入排序,通常有两种方法: 1. 新建切片 这种方法会创建一个新...
- **冒泡排序、插入排序、选择排序**:基础排序算法,虽然效率较低,但易于理解和实现。 - **快速排序、归并排序**:更高效的排序算法,快速排序是原地排序,归并排序则需要额外空间。 - **二分查找**:在有序...
算法则是解决问题的具体步骤,包括排序(如冒泡排序、快速排序、归并排序)、搜索(如线性搜索、二分搜索)、图遍历(如深度优先搜索、广度优先搜索)等。在Golang中,我们可以直接使用内置的`sort`包进行排序,而...
Go中实现的排序算法安装使用 go get 安装: go get github.com/fabioberger/sort 然后将包包含在您的导入中: import " github.com/fabioberger/sort " 如果您使用 sort 标准库“golang.org/pkg/sort”,则包名称...
有关所有算法的完整列表,请参阅:DIRECTORY.md另请参见:https://algorithmswithgo.com排序算法维基百科中的冒泡:冒泡排序(有时也称为沉没排序)是一种简单的排序算法,它会反复遍历要排序的列表,c
在Golang中,可以实现排序算法(如冒泡排序、快速排序、归并排序)、查找算法(如线性搜索、二分搜索)、图算法(如深度优先搜索、广度优先搜索)和字符串匹配算法等。例如,快速排序可以在`sort`包中找到,但更复杂...
常见的排序算法有冒泡排序、插入排序、选择排序、快速排序、归并排序、堆排序等。 在Golang中实现这些排序算法,我们可以利用其内置的数据结构和函数。例如,`sort`包提供了对数组或切片进行排序的功能,包括快速...