public static void selection(int[] a) { for (int i = 0; i < a.length - 1; i++) { // i 代表每轮选择最小元素要交换到的目标索引 int s = i; // s 代表最小元素的索引 for (int j = s + 1; j < a.length; j++) { if (a展开 > a[j]) { s = j; } } if (s != i) { swap(a, s, i); } } }
- 1,将数组分为两个子集,排序的和未排序的,每一轮从未排序的子集中选出最小的元素,放入排序子集。
- 2,重复以上步骤,直到整个数组有序。
优化思路
- 为了减少交换次数,每一轮可以先找最小的索引,在每轮最后才交换元素。
- 1,二者平均时间复杂度都是O(n^2)。
- 2,选择排序一般要快于冒泡,因为其交换次数少。
- 3,如果集合有序度高,则冒泡优于选择。
- 4,冒泡属于稳定排序算法,而选择属于不稳定排序算法。(ps:不稳定算法指多次排序会打乱相同元素原本的顺序)
上一个:国产十大最好猫粮 十大最好猫粮
下一个:python学习记录(文件操作)
热门文章
- 1月25日最新机场订阅 | 19.7M/S|2025年Clash/Shadowrocket/V2ray/SSR免费节点地址链接分享
- 动物疫苗有哪几种类型(我国疫苗有几种类型)
- 动物医院英文缩写是什么意思啊(动物医院的)
- 如何在MySQL中使用复合INTERVAL单元?
- 1月21日最新机场订阅 | 22.2M/S|2025年V2ray/Shadowrocket/SSR/Clash免费节点地址链接分享
- 58同城狗狗领养武汉(武汉领养狗狗的平台)
- 1月14日最新机场订阅 | 22.1M/S|2025年Clash/SSR/V2ray/Shadowrocket免费节点地址链接分享
- 我所在的城市有一家宠物医院的英语作文 我所在的城市有一家宠物医院的英语作文怎么写
- 反射 三种获得class对象的方式
- 国产十大最好猫粮 十大最好猫粮