选择排序–java 完整程序
数据结构复习记录 ——– 选择排序,写的不好,仅供参考,勿喷!
import java.util.Scanner;
public class SelectSortTest {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入待排序数据个数:");
int totalNums = sc.nextInt();
int[] inputData = new int[totalNums];
System.out.println("请输入待排序数据,以空格为分隔符:");
for (int i = 0; i < inputData.length; i++) {
inputData[i] = sc.nextInt();
}
show(inputData);
SelectSort(inputData);//选择排序
show(inputData);
}
/**
* function:选择排序
* @param array //待排序数组
*/
static void SelectSort(int[] array) {
int currentMin;//定义一个指示器,指向当前轮次中最小数所在的位置
//n个数据只需进行n-1次选择,每轮次选择的目的是得到当前轮次选择中最小数据所在的位置
for (int i = 0; i < array.length - 1; i++) {
//在第i轮选择中,默认第i个数据是当前轮次中最小的数据
currentMin = i;
//在第i轮选择中,从第数组中第i个数据到最后一个数据中,比较得到最小数据所在位置
for (int j = i; j < array.length; j++) {
if (array[j] < array[currentMin])
currentMin = j;
}
//得到第i轮选择最小数据位置后,将第i轮的最小数据 “挑出来” 放到前面已经拍好序数据的后一位,也即i所指向位置
if (i != currentMin) {
int temp = array[i];
array[i] = array[currentMin];
array[currentMin] = temp;
}
}
}
/**
* function: 输出数组中的数据
* @param array 待显示的数组
*/
static void show(int[] array) {
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
}
System.out.print("\n");
}
}