选择排序思想
默认采用数组作为数据存储结构
选择排序就是从数组的最左边开始,每次从剩余的元素中选出最小的元素与当前元素对调位置。下一次从左数第二个开始,选出其右边的最小的数并与之对换位置,依次找到每一个位置上应该填的最小值。
与冒泡排序的区别
选择排序是改进的冒泡排序,冒泡排序没比较一次就有可能需要交换一次位置,而选择排序只有找到剩余元素中的最小值时才会对调位置。因此选择排序的交换次数从O(N^2)减少到了O(N)。但是比较次数仍为O(N^2)。
java实现
import java.util.ArrayList;
public class SelectSort {
public static void main(String[] args) {
int[] arr = {2,3,9,5,4,3,2,1};
int[] a = selectSort(arr);
ArrayList<String> sortedArr = new ArrayList<>();
for(int num:a){
sortedArr.add(num+"");
}
System.out.println(sortedArr);
}
public static int[] selectSort(int[] arr){
for(int j=0;j<arr.length-1;j++){
int temp = arr[j],index = 0;
boolean flag = false;
for(int i=j+1;i<arr.length;i++){
if(arr[i]<temp){
temp = arr[i];
index = i;
flag = true;
}
}
while(flag){
swap(j,index,arr);
flag = false;
}
}
return arr;
}
public static void swap(int a,int b,int[] arr){
int temp;
temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
}