选择排序原理:
对于给定的一组数据记录,经过一轮比较之后得到最小的记录,然后将该记录与数据元素的第一个元素进行交换;接着对不保括第一个元素之外的其他元素进行第二轮比较,得到最小的元素之后与数据元素的第二个元素进行交换;然后进行第三次…
示例:
原数据元素:{37, 64, 96, 75, 12}
第一次排序之后:12 {64, 96, 75, 37}
第二次排序之后:12 37 {64, 96, 75}
第三次排序之后:12 37 64 {96, 75}
第四次排序之后:12 37 64 75 {96}
第五次排序之后:12 37 64 75 96(有序)
选择排序算法实现:(不稳定算法)
public static void main(String[] args) {
int[] arr = {37, 64, 96, 75, 12};
sort(arr);
for (int s : arr) {
System.out.print(s+"\t");
}
}
// 选择排序
public static void sort(int[] a) {
for (int i = 0; i <= a.length - 2; i++) {
// 定义一个变量,记录最小元素所在的索引,默认为参与选择排序的第一个元素所在的索引位置
int minIndex = i;
for (int j = i + 1; j < a.length; j++) {
// 判断a[i] 的值是否大于 a[j]
if(greater(a[minIndex], a[j])) {
// 将最小值元素的索引赋给minIndex
minIndex = j;
}
}
// 交换两个位置的值
exc(a, i, minIndex);
}
}
/*
* 比较两个数的大小
*/
public static boolean greater(int v, int w) {
return v > w;
}
/*
* 交换两个位置的值
*/
public static void exc(int[] a, int i, int j) {
int temp;
temp = a[i];
a[i] = a[j];
a[j] = temp;
}