直接选择排序算法:第一趟从n个元素的序列中选出关键值最小(或最大)的元素并放到最前(或最后)位置,下一趟再从n-1个元素中选出最小(或最大)的元素
并放到次前(后)位置。以此类推,经过n-1趟完成排序。下面是直接选择排序的数组实现:
/*
* 直接选择排序 移动次数少
* 比较次数与序列的初始次序无关
* 直接选择排序不稳定
*/
public static int[] selectSort(int data[])
{
for(int i=0;i<data.length-1;i++)
{
int min=i;
for(int j=i+1;j<data.length;j++)
{
if(data[min]> data[j])
min=j;
}
if(min!=i)
swap(data,i,min);
}
return data;
}
/*
* 定义数组元素交换
* 数组data的x下标和y下标的交换
*/
private static int[] swap(int data[],int x,int y)
{
int temp=data[x];
data[x]=data[y];
data[y]=temp;
return data;
}
特点:移动少 比较次数固定 算法不稳定