http://v.youku.com/v_show/id_XMzMyODk5MDI0.html选择排序视频。
思想就是:数组从第一个元素按照顺序与下一个元素比较,如果下一个元素比这个元素大,就交换元素的位置,接着进行比较,知道比较到最后一个元素。
然后从第二个元素比较,重复。
直接上code
package Sort;
public class select {
static int[] data=new int[]{5,9,3,8,7,6,41,555,398,1};
private static void swap(int x,int y)
{
int temp=0;
temp=data[x];
data[x]=data[y];
data[y]=temp;
}
private static void selectsort(int[] data)
{
//外层是到n-1
for(int i=0;i<data.length-1;i++)
{
//内层是到n-1
for(int j=i+1;j<data.length;j++)
{
if(data[j]<data[i])
{
swap(i,j);
}
}
}
}
//测试
public static void main(String[] args){
System.out.print("原数组:");
for(int i=0;i<data.length;i++)
{
System.out.print(data[i]+" ");
}
System.out.print("后来的数组:");
selectsort(data);
for(int j=0;j<data.length;j++)
{
System.out.print(data[j]+" ");
}
}
}
我们发现空间复杂为O(1),时间复杂为O(n*2)。