浏览 1728 次
锁定老帖子 主题:排序之选择排序
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-12-21
最后修改:2010-08-25
选择排序
class Sort{ private long[] a; private int nElement; public Sort(long[] array){ this.a = array; } public static void main(String[] args) { long[] array = new long[]{5,3,1,7,9,2,0}; Sort b = new Sort(array); b.selectSort(); System.out.println(b); } //选择排序 public void selectSort(){ int out,in,low; int step = 0; for(out = 0; out < a.length; out++){ low = out;//low 记录当前最小对象的位置。初始化指向起始的比较对象, //同冒泡一样,遍历比较数组中所有的对象。并且记录最小当前 //最小对象的位置。 for(in = out + 1; in < a.length; in++){ if(a[low] > a[in]){ low = in; } } //将当前对象对象置换至当前排序中对应的位置。 if(low != out){ long temp = a[out]; a[out] = a[low]; a[low] = temp; step ++; } } System.out.println("step = "+step); } public String toString(){ StringBuilder b = new StringBuilder(); for(long l : a){ b.append(l); b.append(","); } return b.toString(); } }
选择排序同样进行了 21 次比较(N*(N-1)/ 2) 但只对数组进行了5 次操作,
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |