【编程题】选择排序(java实现)
思路
第一步:在一堆数组中找出最小的数字和第一个元素交换,放到第一个位置,为最小的元素。
第二步:在第二到最后的数字中选出最小的元素与第二的元素,放到第二个位置,为第二小的元素。
依次到找放完所有位置。
例如
5 4 2 1 7 6 3
第一步:1 4 2 5 7 6 3
第二步:1 2 4 5 7 6 3
第三步:1 2 3 5 7 6 4
…
依次往下
时间复杂度O(n^2)
代码
package sort;
import java.util.Arrays;
public class SelectionSort {
public static void main(String[] args){
int[] arr={3,4,2,1,4,2,5,6};
selectionSort(arr);
System.out.println(Arrays.toString(arr));
}
private static void selectionSort(int[] arr){
int len=arr.length;
if(len<=1)return;
for(int i=0;i<len;i++){
int minIndex=i;
for(int j=i+1;j<len;j++){
if(arr[minIndex]>arr[j])
minIndex=j;
}
swap(arr,i,minIndex);
}
}
private static void swap(int[] arr,int i,int j){
int tem=arr[i];
arr[i]=arr[j];
arr[j]=tem;
}
}