选择排序的 java 实现(Selection Sort)
I. 选择排序的原理
选择排序: 从 0 索引开始,依次和后面的元素比较,小的往前排,第一次扫描完毕,最小值就出现了最小索引处,然后重复以上步骤。简单点说就是,每一次扫描,都从待排序数组中拿出最小的一个排在最前面,然后排成一个新数组,这个数组就是从小到大排好序的了。
II. Java 代码
package org.lovian.sort;
/**
* Selection Sort
*
* @author PENG Zhengshuai
* @lovian.org
*/
public class SelectionSort {
public static void selectionSort(int[] array) {
for (int i = 0; i < array.length - 1; i++) {
// 每一趟扫描
for (int j = i; j < array.length; j++) {
// 每一次选择剩余待排序数组的最小值
if (array[i] > array[j]) {
// 把最小值换到最小索引处
swap(array, i, j);
}
}
printArray(array);
}
}
public static void swap(int[] array, int src, int des) {
int tmp = array[src];
array[src] = array[des];
array[des] = tmp;
}
public static void printArray(int[] array) {
System.out.print("[");
for (int i = 0; i < array.length; i++) {
if (i != array.length - 1) {
System.out.print(array[i] + " ,");
} else {
System.out.print(array[i] + "]");
}
}
System.out.println();
}
public static void main(String[] args) {
int[] array = { 76, 23, 49, 28, 48, 10, 3, 97, 65 };
selectionSort(array);
printArray(array);
}
}
result:
[3 ,76 ,49 ,28 ,48 ,23 ,10 ,97 ,65]
[3 ,10 ,76 ,49 ,48 ,28 ,23 ,97 ,65]
[3 ,10 ,23 ,76 ,49 ,48 ,28 ,97 ,65]
[3 ,10 ,23 ,28 ,76 ,49 ,48 ,97 ,65]
[3 ,10 ,23 ,28 ,48 ,76 ,49 ,97 ,65]
[3 ,10 ,23 ,28 ,48 ,49 ,76 ,97 ,65]
[3 ,10 ,23 ,28 ,48 ,49 ,65 ,97 ,76]
[3 ,10 ,23 ,28 ,48 ,49 ,65 ,76 ,97]
[3 ,10 ,23 ,28 ,48 ,49 ,65 ,76 ,97]
Share this on