今天来说说初级排序算法——选择排序。
选择排序算法的思想的选取数组元素中最小的元素置于最前,然后接着寻找下一个最小元素置于前一个最小元素之后。
public class Selection {
public static void sort(Comparable[] a)
{
int N = a.length;
for(int i=0;i<N;i++)
{
int min = i;
for(int j=i+1;j<N;j++)
{
if(Example.less(a[j],a[min]))
{
min = j;
}
}
Example.exch(a, i, min);
}
}
}
第一层for循环中定义了一个最小的下标 ,然后将最小下标的元素与其后方的元素进行比较,如果比原来的元素小及更新最小下标,然后将最小下标继续与数组中的后续元素进行比较更新。
public class Example {
public static boolean less(Comparable v,Comparable w)
{
return v.compareTo(w)<0;
}
public static void show(Comparable[] a)
{ // 打印数组
for(int i=0;i<a.length;i++)
{
System.out.print(a[i]+" ");
}
System.out.println();
}
public static boolean isSorted(Comparable[] a)
{ //判别数组元素是否有序
for(int i=0;i<a.length;i++)
{
if(less(a[i],a[i-1]))
return false;
}
return true;
}
public static void exch(Comparable[] a,int i,int j)
{
Comparable temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
选择排序的算法时间复杂度O(n2)