选择排序(Selection Sort)是一种简单直观的排序算法,其算法原理为首先在未排序的序列中找到最小(大)的元素,存放到排序序列的起始位置,然后再从剩余未排序的元素中继续寻找最小(大)的元素,存放到已排序序列的末尾,以此类推,直到所有元素均排序完成。
选择排序一共有“数组数-1”轮排序,每一轮排序又是一个循环,循环的规则如下:
1)先假定当前这轮循环的第一个数是最小数。
2)然后和后面每个数进行比较,如果发现有比当前数更小的数,则重新确定最小数,并得到下标。
3)当遍历到数组的最后时,就得到本轮最小的数。
4)和当前循环的第一个数进行交换。
Java代码实现:
public static void main(String[] args) {
int[] arr={6,3,9,7,1,15,5,2,4,11,4};
print(arr);
selectionSort(arr,0,arr.length-1);
print(arr);
}
public static void selectionSort(int[] arr,int left,int right){
for (int k=left;k<=right;k++){
int min=arr[k];
int minIndex=k;
for (int i=k+1;i<=right;i++){
if (arr[i]<min){
min=arr[i];
minIndex=i;
}
}
int tem=arr[k];
arr[k]=arr[minIndex];
arr[minIndex]=tem;
}
}
private static void print(int[] arr) {
for (int i : arr) {
System.out.print(i+"\t");
}
System.out.println();
}