选择排序:
public static void main(String[] args0) {
int[] array = new int[] {3,2,5,7,1,8,0,12,39,200};
for(int x : array) {
System.out.print(x + " ");
}
int[] resultArray = new int[array.length];
//从array中找出最大的数据,放入resultArray的最后
int maxPosition = 0;//最大元素在array中的下标
int lastIndex = 0;
for(int j=0;j<array.length;j++) {//需要选择length次最大值
int max = 0;
for(int i = 0;i<array.length;i++) {
if(array[i] != -999 && max<array[i]) {
max = array[i];
maxPosition = i;
}
}
array[maxPosition] = -999;//去除掉已经选过的最值
resultArray[lastIndex] = max;
lastIndex ++;
}
System.out.println();
for(int x : resultArray) {
System.out.print(x + " ");
}
}
改良版:
public static void main(String[] args0) {
int[] array = new int[] { 3, -4, 39, 2, 5, 7, 1, 8, 0, 12, 2 };
for (int x : array) {
System.out.print(x + " ");
}
int minPosition = 0;// 最大元素在array中的下标
int tmp = 0;
for (int j = 0; j < array.length - 1; j++) {// 需要选择length-1次最大值
minPosition = j;// 新一轮开始时,最小位置需要重新设置
for (int i = j + 1; i < array.length; i++) {
if (array[minPosition] > array[i]) {
minPosition = i;
}
}
tmp = array[j];
array[j] = array[minPosition];
array[minPosition] = tmp;
}
System.out.println();
for (int x : array) {
System.out.print(x + " ");
}
}