一,选择排序法
选择排序法主要也是通过置换元素来达到排序的效果,和冒号排序不一样的是每次从待排序序列中找出最大值或最小值,查找过程重复 n-1 次。对于每次找到的最大值或最小值,通过交换元素位置的方式将它们放置到适当的位置,最终使整个序列变成有序序列。(冒号排序是通过两个相邻元素置换)
通俗一点讲就是先选择一个下标为0的数,然后再后面的元素中选择比他更小或更大的元素进行置换,以此类推;代码实现如下
package demo;
public class demo {
public static void selection_sort(int[] list) {
int length = list.length;
int i, j;
// 从第 1 个元素开始遍历,直至倒数第 2 个元素
for (i = 0;i< length-1;i++) {
int min= i; // 假设最小值为第 i 个元素
// 从第 i+1 个元素开始遍历,查找真正的最小值
for (j = i + 1; j < length; j++) {
if (list[j] < list[min]) {
min = j;
}
}
// 如果最小值所在位置不为 i,交换最小值和第 i 个元素的位置
if (min != j) {
int temp = list[min];
list[min] = list[i];
list[i] = temp;
}
}
}
public static void main(String[] args) {
int[] list = { 1, 52, 31, 19, 2, 46, 4, 45 };
selection_sort(list);
// 输出已排好序的序列
for (int i = 0; i < list.length; i++) {
System.out.print(list[i] + " ");
}
}
}
写的不好,多多见谅,欢迎指正!
|