选择排序
思想:从数组中选取一个初始位置,然后通过双重循环进行对比交换,最终达到一个有序的数组。
比如:数组 int[] arr={5,6,7,1,3,4};假设索引0位置的数为最小数
int[] arr={5,6,7,1,3,4};
int temp;
System.out.println(arr.length);
for(int i=0;i<arr.length-1;i++){
int minIndex=i;*//假设i位置数组小,即索引0处的值最小*
for(int j=i+1;j<arr.length;j++){
minIndex=arr[j]<arr[minIndex]?j:minIndex;
}
//交换
{
temp=arr[i];
arr[i]=arr[minIndex];
arr[minIndex]=temp;
}
}
//通过增强for循环输出
for (int a:arr){
System.out.print(a);
}
时间复杂度。通过双重for循环进行排序N*N,即为O(N^2)
空间复杂度,使用一个交换变量temp,即为O(1)