菜鸟笔记
简单的开发笔记
首页
登录 / 注册
笨猫首页
笨猫首页
斑马导航
奶牛网盘
白象软仓
青蛙壁纸
毒蛇电影
怪鸟头像
大熊逗图
热狗应用
蜗牛摘录
狐狸颜选
关于我们
收藏网站
菜鸟笔记
简单的开发笔记
首页
登录 / 注册
十大经典排序 一 冒泡排序
冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。 作为最简单的排序算法之一,冒泡排序给我的感觉就像 Abandon 在单词书里出现的感觉一样,每次都在第一页第一位,所以最熟悉。冒泡排序还有一种优化算法,就是立一个 flag,当在一趟序列遍历中元素没有发生交换,则证明该序列已经有序。但这种改进对于提升性能来说并没有什么太大作用。 ###算法步骤 1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。 3. 针对所有的元素重复以上的步骤,除了最后一个。 4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 ###各语言代码示例 1.JavaScript 代码实现 ```javascript function bubbleSort(arr) { var len = arr.length; for (var i = 0; i < len - 1; i++) { for (var j = 0; j < len - 1 - i; j++) { if (arr[j] > arr[j+1]) { // 相邻元素两两对比 var temp = arr[j+1]; // 元素交换 arr[j+1] = arr[j]; arr[j] = temp; } } } return arr; } ``` 2.Python 代码实现 ```python def bubbleSort(arr): for i in range(1, len(arr)): for j in range(0, len(arr)-i): if arr[j] > arr[j+1]: arr[j], arr[j + 1] = arr[j + 1], arr[j] return arr ``` 3.Go 代码实现 ```go func bubbleSort(arr []int) []int { length := len(arr) for i := 0; i < length; i++ { for j := 0; j < length-1-i; j++ { if arr[j] > arr[j+1] { arr[j], arr[j+1] = arr[j+1], arr[j] } } } return arr } ``` 4.Java 代码实现 ```java public class BubbleSort implements IArraySort { @Override public int[] sort(int[] sourceArray) throws Exception { // 对 arr 进行拷贝,不改变参数内容 int[] arr = Arrays.copyOf(sourceArray, sourceArray.length); for (int i = 1; i < arr.length; i++) { // 设定一个标记,若为true,则表示此次循环没有进行交换,也就是待排序列已经有序,排序已经完成。 boolean flag = true; for (int j = 0; j < arr.length - i; j++) { if (arr[j] > arr[j + 1]) { int tmp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = tmp; flag = false; } } if (flag) { break; } } return arr; } } ``` 5.PHP 代码实现 ```php function bubbleSort($arr) { $len = count($arr); for ($i = 0; $i < $len - 1; $i++) { for ($j = 0; $j < $len - 1 - $i; $j++) { if ($arr[$j] > $arr[$j+1]) { $tmp = $arr[$j]; $arr[$j] = $arr[$j+1]; $arr[$j+1] = $tmp; } } } return $arr; } ``` 6.C语言 ```c #include
void bubble_sort(int arr[], int len) { int i, j, temp; for (i = 0; i < len - 1; i++) for (j = 0; j < len - 1 - i; j++) if (arr[j] > arr[j + 1]) { temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } int main() { int arr[] = { 22, 34, 3, 32, 82, 55, 89, 50, 37, 5, 64, 35, 9, 70 }; int len = sizeof(arr) / sizeof(arr[0]); bubble_sort(arr, len); int i; for (i = 0; i < len; i++) printf("%d ", arr[i]); return 0; } ``` 7.C++ ```cpp #include
using namespace std; template
//整数或浮点数皆可使用,若要使用类(class)或结构体(struct)时必须重载大于(>)运算符 void bubble_sort(T arr[], int len) { int i, j; for (i = 0; i < len - 1; i++) for (j = 0; j < len - 1 - i; j++) if (arr[j] > arr[j + 1]) swap(arr[j], arr[j + 1]); } int main() { int arr[] = { 61, 17, 29, 22, 34, 60, 72, 21, 50, 1, 62 }; int len = (int) sizeof(arr) / sizeof(*arr); bubble_sort(arr, len); for (int i = 0; i < len; i++) cout << arr[i] << ' '; cout << endl; float arrf[] = { 17.5, 19.1, 0.6, 1.9, 10.5, 12.4, 3.8, 19.7, 1.5, 25.4, 28.6, 4.4, 23.8, 5.4 }; len = (float) sizeof(arrf) / sizeof(*arrf); bubble_sort(arrf, len); for (int i = 0; i < len; i++) cout << arrf[i] << ' '<
intArray[j + 1]) { temp = intArray[j]; intArray[j] = intArray[j + 1]; intArray[j + 1] = temp; if (!swapped) swapped = true; } if (!swapped) return; } } ``` 9.Ruby ```ruby class Array def bubble_sort! for i in 0...(size - 1) for j in 0...(size - i - 1) self[j], self[j + 1] = self[j + 1], self[j] if self[j] > self[j + 1] end end self end end puts [22, 34, 3, 32, 82, 55, 89, 50, 37, 5, 64, 35, 9, 70].bubble_sort! ``` 10.swift ```ruby import Foundation func bubbleSort (arr: inout [Int]) { for i in 0..
arr[j+1] { arr.swapAt(j, j+1) } } } } // 测试调用 func testSort () { // 生成随机数数组进行排序操作 var list:[Int] = [] for _ in 0...99 { list.append(Int(arc4random_uniform(100))) } print("\(list)") bubbleSort(arr:&list) print("\(list)") } ```
微信搜搜
笨猫小站
wordpress 在nginx服务器设置固定链接后出现404问题
十大经典排序 一 冒泡排序
PHP-FFMpeg 操作音视频
node 源管理工具 nrm
(1492)
(262)
(42)
打赏
公众号
小程序
QQ群
顶部
笨猫小站
小站首页
笨猫图库
懒虫工具
奶牛网盘
斑马导航
青蛙壁纸
毒蛇电影
白象软件
热狗应用
怪鸟头像
狐狸颜选
菜鸟笔记
蜗牛摘录
谢谢老板打赏
祝老板每天都有好运气
支付宝
微信
关闭弹窗
小站会员
永久会员最划算哟
3天体验卡
¥9.00
¥29.00
每天仅需3.00元
每天下载
5
次
1年畅享卡
¥39.00
¥99.00
每天仅需0.11元
每天下载
20
次
永久至尊卡
¥99.00
¥369.00
每天仅需0.00元
每天下载
1000
次
支付宝支付
微信支付
1. 会员充值前请仔细核对信息
2. 会员属于虚拟产品,充值成功后不予退款
微信搜一搜
笨猫小站
打赏赞助
猫豆充值
充值越多价格约优惠哟
20 猫豆
¥5.00元
¥5.00元
50 猫豆
¥9.00元
¥9.00元
100 猫豆
¥15.00元
¥15.00元
200 猫豆
¥20.00元
¥20.00元
500 猫豆
¥29.00元
¥29.00元
1000 猫豆
¥49.00元
¥49.00元
2000 猫豆
¥89.00元
¥89.00元
5000 猫豆
¥179.00元
¥179.00元
10000 猫豆
¥299.00元
¥299.00元
支付宝支付
微信支付
微信扫码支付
请使用微信扫一扫完成付款
¥15.00
22:21:12
我已支付
笨猫小站
微信扫码关注不领福利
请使用微信扫一扫关注我
已关注
笨猫工具
笨猫小站工具库
请使用微信扫一扫立马获取
已关注
笨猫小站
笨猫小站资源群
请使用QQ扫一扫加如QQ群
已加入
绑定账号
绑定账号手机端登录更方便
确认绑定
绑定微信
绑定微信登录更方便
微信二维码已过期
刷新
请使用微信扫码关注即可绑定
(移动端截图保存扫码关注)
订单详情
订单信息已生成
请稍等...
登录
·
注册
登录即代表您已同意
《服务协议》
和
《隐私协议》
确认提交
微信快捷登录/注册
注册即代表您已同意
《服务协议》
和
《隐私协议》
确认提交
微信快捷登录/注册
微信二维码已过期
刷新
请使用微信扫描二维码关注登录
手机账号注册