1. 选择排序的思想
选择排序基本思想是:第一次从 arry[0]--array[n-1]中选取最小值,与arry[0]进行交换,第二次从arry[1]--array[n-1]中选取最小值,与 arry[1]进行交换,依次类推,总共进行n-1次排序,得到一个编码顺序从小到大排序的有序序 列。
2 选择排序的思路分析:
原始的数组: 101,34,119,1
第一轮排序: 1,34,119,101
第二轮排序: 1,34,119,101
第三轮排序:1,34,101,119
选择排序一共有数组大小-1论排序。
每一轮排序,又是一个循环:
- 先假定当前这个数是最小数。
- 然后和后面的每个数进行比较,如果发现有比当前这个数更小的数,就重新确定最小数,并得到下标。
- 当遍历到数组的最后数时,就得到了本轮的最小数和下标。
- 把得到最小数和假定的最小数进行交换。
代码实现
package Sort;
import java.util.Arrays;
public class SelectSort {
public static void SelectSort(int[] arr){
int MinIndex=0;//最小值下标
int MinValue=0;//最小值
for (int i = 0; i < arr.length - 1; i++) {
MinIndex=i;//假设每轮排序的第一个值为最小值得小标
MinValue=arr[i];
for (int j = i+1; j < arr.length; j++) {
if (MinValue>arr[j]){
MinIndex=j;
MinValue=arr[j];
}
}
if (MinIndex!=i){
//交换
arr[MinIndex]=arr[i];
arr[i]=MinValue;
}
}
}
public static void main(String[] args) {
int[] arr={5,6,4,7,3};
SelectSort(arr);
System.out.println(Arrays.toString(arr));
}
}
时间复杂度O(n^2)