- 算法描述:
首先,找到数组中最小的那个元素;其次,将它和数组的第一个元素交换位置;接着,在剩下的元素中找最小的元素,将它与数组中第二个元素交换。如此反复,直到遍历完整个数组。因为不断的在选择剩下元素的最小值,所以叫选择排序。
- 代码实现:
public class SelectSort
{
public static void sort(int[] array)//实现排序的方法
{
int temp;
for(int i=0;i<array.length;i++)//从第一个元素开始遍历到最后一个元素
{
for(int j=i+1;j<array.length;j++)//第i个元素与i+1~n的每一个元素比较选出最小值
{
if(array[j]<array[i])
{
temp=array[j];
array[j]=array[i];
array[i]=temp;
}
}
}
}
public static void show(int[] array) //排序之后输出结果
{
for(int i=0;i<array.length;i++)
{
System.out.print(array[i]+" ");
}
}
public static boolean isSorted(int[] array)//判断排序是否正确
{
for(int i=1;i<array.length;i++)
{
if(array[i]<array[i-1])
{
System.out.println("false");
return false;//在排序有错时跳出循环
}
}
System.out.println("排序结果正确,输出结果为:");
return true;
}
public static void main(String[] args)
{
int[] array={5,13,3,7,4,16,18,11,2,3,9};
sort(array);
isSorted(array);
show(array);
}
}
- 排序算法的特点:
- 运行时间与输入无关
- 数据移动是最少的
- 对于长度为N的数组,大约需要N*N/2次比较和N次交换