选择排序排序
时间复杂度 O(n平方)
每次找到一个最小值依次放在数组的左边,知道找不到最小值
一,思路一,找出数组中的最小索引,让他和第一元素交换
public class Main{
//冒泡排序思路1.
public static void sort1(int[]a) {
//4,5,6,7,0,2,1,3
//让最小位置和a[0]交换得到 0 5 6 7 4 2 1 3
for(int i=1;i<a.length;i++){
if(a[i]<a[0]){
int temp=a[i];
a[i]=a[0];
a[0]=temp;
}
}
printArrays(a);//遍历数组中的元素
}
//遍历数组中的每一个索引对应的元素
public static void printArrays(int []a){
for(int i=0;i<a.length;i++){
System.out.print(a[i]+" ");
}
}
public static void main(String[] args) {
int[] indices = {4,5,6,7,0,2,1,3};
sort1(indices);
}
}
完成了第1步,把最小的排在了第一个,
2.在上图绿色框的数组中找到最小的元素,让他排在该绿色框内第一个元素交换
即:
3.接着减少绿色框的长度(即减少数组长度),找到绿色框内最小的数把它和绿色框内的第一个元素交换,重复这个步骤直到绿色框的长度变成0,
此时整个数组排序完成。
4.用什么来控制那个绿色的框的长度?
如何表示绿色框的第一个起始元素
答案是: for循环,
a[0]和i是个变量
a[j]的含义是每次绿色框中第一个元素(即是每次绿色框中的最小值)
最终: