背景
选择排序和冒泡排序是最简单的两种排序方式。下面做一下选择排序的实现。
实现
package com.example.demo;
public class SelectSort1 {
public static void main(String[] args) {
int[] data = {2, 1, 6, 5, 3, 8, 4, 7};
sort(data);
for (int value : data) {
System.out.println(value);
}
}
private static void sort(int[] array) {
if (array == null || array.length == 0) {
return;
}
// 数据交换的时候使用
int tmp;
// 需要进行length - 1次扫描
for (int i = 0; i < array.length - 1; i++) {
// 初始化最小位置
int min = i;
// 找到最小值的位置
for (int j = i + 1; j < array.length; j++) {
if (array[j] < array[min]) {
min = j;
}
}
// 如果最小值的位置不是初始位置,就进行交换
if (min != i) {
tmp = array[i];
array[i] = array[min];
array[min] = tmp;
}
}
}
}
个人理解
选择排序特点:
- 重点在“选择”两个字上,即选择出最小或者最大的那个数,然后再进行操作
- 数据交换的次数少
- 比较的次数与冒泡排序的相同(这一点是基本不能避免的)
- 选择排序更多的是在索引上的操作(索引就是i和j的操作)

本文深入解析了选择排序算法的实现过程,对比冒泡排序,强调其在数据交换次数上的优势及索引操作的特点。

被折叠的 条评论
为什么被折叠?



