首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

java排序二(选择排序)

2012-09-06 
java排序2(选择排序)?package helloimport java.util.Random/** * 书接上回--冒泡排序 ** 选择排序: 它

java排序2(选择排序)

?

package hello;import java.util.Random;/** * 书接上回--冒泡排序 *  * 选择排序: 它改进了冒泡排序,将必要的交换次数O(N*N)减少到了O(N). 但,比较次数仍然保持为O(N*N). * 然而,选择排序仍然为大记录量的排序提出了一个比较重要的改进, 因为,这些大量的记录需要在内存中移动,这就使交换时间和比较时间 相比起来,交换时间更为重要. * (一般来说,在java语言中不是这种情况,java中只是改变了引用位置, 而实际对象的位置并没有发生改变.) */public class ChooseSortApp {public static void main(String[] args) {long ls = System.currentTimeMillis();int maxSize = 100;SelectionSort arr;arr = new SelectionSort(maxSize);Random r = new Random();// insert 10 itemsfor (int i = 0; i < 10; i++) {arr.insert(r.nextInt(100));}arr.display();arr.selectionSort();arr.display();System.out.println(System.currentTimeMillis()-ls);}}class SelectionSort extends BubbleSort {public SelectionSort(int max) {super(max);}/* * 外层循环用循环变量out,从数组开头开始(数组下标为0)向高位增长. 内层循环用循环变量in,从out所指位置开始,同样是向右移位. * 在每一个in的新位置,数据项a[in]和a[min]进行比较. 如果a[in]更小,则min被赋值为in的值. * 在内层循环的最后,min指向最小的数据项,然后交换out和min指向的数组数据项 */public void selectionSort() {int out, in, min;for (out = 0; out < nElems - 1; out++) {min = out;for (in = out + 1; in < nElems; in++) {if (a[in] < a[min])min = in;}swap(out, min);}}}

热点排行