选择排序的时间复杂度是O(n^2)✨✨✨
基本思路:依次选择出数组中的最小数字,依次放到数组低位处0,1,2...
以下是Java代码实现选择排序
package DataStructure;
/**
* Created with IntelliJ IDEA.
* Description:
* User: 86178
* Date: 2024-03-05
* Time: 19:45
*/
public class Sort {
public static void main(String[] args) {
int[] arr={5,1,8,9,0,2,6,3,7,4};
for (int i : arr) {
System.out.print(i+" ");
}
SelectSort(arr);
System.out.println();
for (int i : arr) {
System.out.print(i+" ");
}
}
public static void SelectSort(int[] arr){
//int flag=0;
for(int i=0;i<arr.length-1;i++){
int index=i;
int min=arr[i];
//flag=0;
for(int j=i+1;j<arr.length;j++){
if(arr[j]<min){
min=arr[j];
index=j;
//flag=1;
}
}
//todo 在选择排序中使用flag判断是否发生交换来断定是否需要下一轮是错误的
//todo 因为在排序算法中 是保证 每一个数字的下一个数字都比其大
//todo 而在选择排序中:仅仅可以保证 当前数字是后面数字中最小的那一个
/*if(flag==0){
break;
}*/
//找到了最小的
int tmp=arr[i];
arr[i]=arr[index];
arr[index]=tmp;
System.out.printf("\n第%d轮排序后\n",i+1);
for (int i1 : arr) {
System.out.print(i1+" ");
}
}
}
}