选择排序
原理
原理是先假设第一个元素(当前元素)是最小值,与其后一个元素进行比较。若是当前元素比后一个元素大,那么就将后一个元素设为最小值,接着后一个元素再与其后边元素比较,以此类推,直到找到最小值,最后将最小值和当前元素交换位置。
至此,就结束了一次外层循环。后面的循环也是如此,第二个、第三个…元素假设是最小值,然后和后面的元素进行比较、交换位置。排序完成。
代码示例
/**
* 选择排序
*/
public class SelectionSort {
/*
原理是先假设第一个元素(当前元素)是最小值,与其后一个元素进行比较。若是当前元素比后一个元素大,
那么就将后一个元素设为最小值,接着后一个元素再与其后边元素比较,以此类推,直到找到最小值,
最后将最小值和当前元素交换位置。至此,就结束了一次外层循环。
后面的循环也是如此,第二个、第三个...元素假设是最小值,然后和后面的元素进行比较、交换位置。排序完成。
*/
public static int[] sort(int[] arr){
for (int i = 0; i < arr.length -1; i++) {
// 创建临时变量min
int min = i;
for (int j = i+1 ; j < arr.length; j++) { // 内层循环是元素之间作比较
// 判断当前的元素是否比其后一个元素大
if (arr[min] > arr[j]){
min = j;
}
}
if (i != min){
// 将找到的最小值和i位置所在的值进行交换
int tmp = arr[i];
arr[i] = arr[min];
arr[min] = tmp;
}
}
return arr;
}
public static void main(String[] args) {
int[] arr = {2,3,4,-6,7,5};
int[] sort = sort(arr);
for (int result:sort){
System.out.print (result+" ");
}
}
}