菜鸟笔记
简单的开发笔记
首页
登录 / 注册
笨猫首页
笨猫首页
斑马导航
奶牛网盘
白象软仓
青蛙壁纸
毒蛇电影
怪鸟头像
大熊逗图
热狗应用
蜗牛摘录
狐狸颜选
关于我们
收藏网站
菜鸟笔记
简单的开发笔记
首页
登录 / 注册
十大经典排序 一 选择排序
选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。 ### 1. 算法步骤 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。 重复第二步,直到所有元素均排序完毕。 ### 2. 动图演示  ### 3.代码实现 1.JavaScript 代码实现 ```javascript function selectionSort(arr) { var len = arr.length; var minIndex, temp; for (var i = 0; i < len - 1; i++) { minIndex = i; for (var j = i + 1; j < len; j++) { if (arr[j] < arr[minIndex]) { // 寻找最小的数 minIndex = j; // 将最小数的索引保存 } } temp = arr[i]; arr[i] = arr[minIndex]; arr[minIndex] = temp; } return arr; } ``` 2.Python 代码实现 ```python def selectionSort(arr): for i in range(len(arr) - 1): # 记录最小数的索引 minIndex = i for j in range(i + 1, len(arr)): if arr[j] < arr[minIndex]: minIndex = j # i 不是最小数时,将 i 和最小数进行交换 if i != minIndex: arr[i], arr[minIndex] = arr[minIndex], arr[i] return arr ``` 3.Go 代码实现 ```go func selectionSort(arr []int) []int { length := len(arr) for i := 0; i < length-1; i++ { min := i for j := i + 1; j < length; j++ { if arr[min] > arr[j] { min = j } } arr[i], arr[min] = arr[min], arr[i] } return arr } ``` 4.Java 代码实现 ```java public class SelectionSort implements IArraySort { @Override public int[] sort(int[] sourceArray) throws Exception { int[] arr = Arrays.copyOf(sourceArray, sourceArray.length); // 总共要经过 N-1 轮比较 for (int i = 0; i < arr.length - 1; i++) { int min = i; // 每轮需要比较的次数 N-i for (int j = i + 1; j < arr.length; j++) { if (arr[j] < arr[min]) { // 记录目前能找到的最小值元素的下标 min = j; } } // 将找到的最小值和i位置所在的值进行交换 if (i != min) { int tmp = arr[i]; arr[i] = arr[min]; arr[min] = tmp; } } return arr; } } ``` 5.PHP 代码实现 ```php function selectionSort($arr) { $len = count($arr); for ($i = 0; $i < $len - 1; $i++) { $minIndex = $i; for ($j = $i + 1; $j < $len; $j++) { if ($arr[$j] < $arr[$minIndex]) { $minIndex = $j; } } $temp = $arr[$i]; $arr[$i] = $arr[$minIndex]; $arr[$minIndex] = $temp; } return $arr; } ``` 6.C 语言 ```c void swap(int *a,int *b) //交換兩個變數 { int temp = *a; *a = *b; *b = temp; } void selection_sort(int arr[], int len) { int i,j; for (i = 0 ; i < len - 1 ; i++) { int min = i; for (j = i + 1; j < len; j++) //走訪未排序的元素 if (arr[j] < arr[min]) //找到目前最小值 min = j; //紀錄最小值 swap(&arr[min], &arr[i]); //做交換 } } ``` 7.C++ ```cpp template
//整數或浮點數皆可使用,若要使用物件(class)時必須設定大於(>)的運算子功能 void selection_sort(std::vector
& arr) { for (int i = 0; i < arr.size() - 1; i++) { int min = i; for (int j = i + 1; j < arr.size(); j++) if (arr[j] < arr[min]) min = j; std::swap(arr[i], arr[min]); } } ``` 8.C# ```csharp static void selection_sort
(T[] arr) where T : System.IComparable
{//整數或浮點數皆可使用 int i, j, min, len = arr.Length; T temp; for (i = 0; i < len - 1; i++) { min = i; for (j = i + 1; j < len; j++) if (arr[min].CompareTo(arr[j]) > 0) min = j; temp = arr[min]; arr[min] = arr[i]; arr[i] = temp; } } ``` 9.Swift ```swift import Foundation /// 选择排序 /// /// - Parameter list: 需要排序的数组 func selectionSort(_ list: inout [Int]) -> Void { for j in 0..
list[i] { minIndex = i } } list.swapAt(j, minIndex) } } ```
微信搜搜
笨猫小站
MySQL server has gone away 问题的解决方法
apache 配置文件详解
微信支付V3版本小程序支付 php签名,验签,数据解密代码分享
Mac下php环境(apache php mysql)搭建及其配置详解
(1690)
(450)
(162)
打赏
公众号
小程序
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群
已加入
绑定账号
绑定账号手机端登录更方便
确认绑定
绑定微信
绑定微信登录更方便
微信二维码已过期
刷新
请使用微信扫码关注即可绑定
(移动端截图保存扫码关注)
订单详情
订单信息已生成
请稍等...
登录
·
注册
登录即代表您已同意
《服务协议》
和
《隐私协议》
确认提交
微信快捷登录/注册
注册即代表您已同意
《服务协议》
和
《隐私协议》
确认提交
微信快捷登录/注册
微信二维码已过期
刷新
请使用微信扫描二维码关注登录
手机账号注册