假设从小到大排序
选择排序就是在当前未排序序列选择一个最小的元素与未排序序列首元素交换,实现每次排一个数的效果
步骤图:min为当前待排序序列首元素的索引,Min为待排序序列中的最小元素的索引
当[min]>[Min]时,发生交换
参考链接:https://mp.weixin.qq.com/s/HQg3BzzQfJXcWyltsgOfCQ
代码实现:
n个数只需要排n-1次,【0,a.length-1)
package Sort;
public class SelectSort {
public int[] select(int[] a) {
if(a.length<=1)
return a;
for(int i=0;i<a.length-1;i++)
{
//假设未排序序列头元素索引为最小元素索引
int minindex=i;
for(int j=i+1;j<a.length;j++)
{
//找出最小索引
if(a[j]<a[minindex])
{
minindex=j;
}
}
//判断需不需要交换
if(a[minindex]<a[i])
{
int temp = a[minindex];
a[minindex] = a[i];
a[i] = temp;
}
printall(a);
System.out.println();
}
return a;
}
//打印
public void printall(int[] a)
{
for(int i = 0;i<a.length;i++)
{
System.out.print(a[i]+" ");
}
}
public static void main(String[] args) {
int a[] = {9,8,5,3};
SelectSort selectSort = new SelectSort();
int[] select = selectSort.select(a);
}
}