选择排序

在待排序的数组中,任意指定一个数作为数组中最小的数并记录其在数组中的位置,记为a,将该数与待排序数组中的数据依次进行比较,当该数字比数组中的数字大时,将此时数组中小的数据的位置交给a,此时a位置所对应在数组中的值作为指定的最小数再次与数组中剩余的数依次进行比较;当指定的最小数与数组中的数据全部比较完之后,得到一个数组中最小的数,然后将这个最小的数排到数组的最左端,在待排序数组中排除最左端已经完成排序的数,将剩下的数作为一个数组,按一样的方式再次进行比较。

package blog.csdn.net.zhaikun.arithmeticdemo;

import java.util.Arrays;

/**
* Created by zhaikun68 on 2018/2/23.
* <p>
* 选择排序Demo
*/
public class SelectionSortDemo {

/**
* 选择排序
*
* @param sortArray 待排序数组
* @return 排序完成后的数组
*/
private static int[] selectionSort(int[] sortArray) {
if (sortArray == null || sortArray.length == 0) {
System.out.print("待排序数组为空,不进行排序");
return null;
}
int minIndex;//指定一个比较值在待比较数组中的下标
for (int outIndex = 0; outIndex < sortArray.length - 1; outIndex++) {
minIndex = outIndex;
for (int inIndex = outIndex + 1; inIndex < sortArray.length; inIndex++) {
if (sortArray[minIndex] > sortArray[inIndex]) {
minIndex = inIndex;
}
}
int temp = sortArray[outIndex];
sortArray[outIndex] = sortArray[minIndex];
sortArray[minIndex] = temp;
}
return sortArray;
}

public static void main(String[] args) {
int[] initArray = {1, 1, 5, 0, 2, 2, 10, 5, 3, 6};//初始化一个需要排序的数组
int[] sortAfterArray = selectionSort(initArray);
System.out.print(Arrays.toString(sortAfterArray));
}
}