算法:选择排序

1、核心算法

 

/**
 * 核心算法
 */
class ArraySel{

    private long[] a;//定义排序数组
    private int nElems;//定义数组大小

    public ArraySel(int max){
        a[nElems] = value;
        nElems ++;
    }

    /**
     * 打印
     */
    public void display(){
        for(int j = 0; j< nElems; j++){
            System.out.print(a[j] + " ");
        }
        System.out.println(" ");
    }
     
    /**
     * 排序
     */
	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);//交换 
			} 
		} 
	}
     
    /**
     * 交换
     */
    private void swap(int one, int two){
        long temp = a[one];
        a[one] = a[two];
        a[two] = temp;
    }
}



2、运行并试执行:

 

class SelectSortApp{

    public static void main(String[] args){
        int maxSize = 100;
        ArraySel arr;
        arr = new ArrauSel(maxSize);
		//插入数据
        arr.insert(77);
        arr.insert(99);
        arr.insert(44);
        arr.insert(55);
        arr.insert(22);
        arr.insert(88);
        arr.insert(11);
        arr.insert(00);
        arr.insert(66);
        arr.insert(33);

        arr.display();//打印数据-排序前
        arr.selectionSort();//排序
        arr.display();//打印数据-排序后
    }
}

 

3、运行结果:

 

 

77 99 44 55 22 88 11 0 66 33
0 11 22 33 44 55 66 77 88 99

 

Reference:

[1] Robert Lalore(著) 计晓云,赵研,曾希,狄小菡(译), Java数据结构和算法(第二版),中国电力出版社,2004 :63-65

 

posted @ 2017-08-17 10:24  ryelqy  阅读(124)  评论(0编辑  收藏  举报