算法本质:(最大值是关键点,肯定放到最后了,如此循环)每次都从第一位向后滚动比较,使最大值沉底,最小值上升一次,最后一位向前推进(即最后一位刚确定的最大值不再参加比较,比较次数减1)
复杂度: 时间复杂度 O(n2) ,空间复杂度O(1)
JAVA源代码
/*
选择排序
*/
class ArrDemo1
{
public static void MP(int[] arr)
{
for(int x=0;x<arr.length-1;x++)
{
for(int y=0;y<arr.length-x-1;y++)
{
if(arr[y]>arr[y+1])
{
int t=arr[y];
arr[y]=arr[y+1];
arr[y+1]=t;
}
}
}
}
public static void main(String[] args)
{
int[] arr={4,5,6,3,8,9};
//排序前
printArray(arr);
//排序
MP(arr);
//排序后
printArray(arr);
}
public static void printArray(int[] arr)
{
System.out.print("[");
for(int x=0;x<arr.length;x++)
{
if(x!=arr.length-1)
System.out.print(arr[x]+",");
else
System.out.println(arr[x]+"]");
}
}
}