从代码层面理解:算法的不稳定性
public class TestSelectSortStable {
public static void main(String[] args) {
Student[] arr = {new Student("java", 22),
new Student("hello", 22),
new Student("jack", 17),
new Student("tom", 29)
};
System.out.println(Arrays.toString(arr));
for (int i = 0; i < arr.length; i++) {
int minPosition = i;
for (int j = i + 1; j < arr.length; j++) {
if (arr[minPosition].age > arr[j].age) {
minPosition = j;
}
}
swap(arr, i, minPosition);
}
System.out.println(Arrays.toString(arr));
}
static class Student {
public String name;
public int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
public static void swap(Student[] arr, int i, int j) {
Student temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}