1. 程式人生 > >演算法導論學習||選擇排序

演算法導論學習||選擇排序

選擇排序簡單得說就是找出最小的和第一個數交換,再找出次小的數與第二個數交換……以這樣的方法進行排序。

下面是自己用java實現的演算法:

public class selection_sort {

	public static void main(String[] args) {

		ArrayList<Integer> a = new ArrayList<Integer>();
		//從控制檯獲取要排序的數,“#”鍵結束
		Scanner sc = new Scanner(System.in);
		while(sc.hasNextInt()){
			if(sc.equals("#")){
				break;
			}
			a.add(sc.nextInt());
		}
				

		// java實現選擇排序
		for(int j=0;j<a.size();j++){
			int key = a.get(j);
			int key_i = j;
			int i =j+1;
		    while(i<a.size()){
		    	if(key>a.get(i)){
		    		key = a.get(i);
		    		key_i = i;
			    }
			i++;
		    }
		int temp = a.get(j);		
		a.set(j, key);
		a.set(key_i, temp); 
		}
        
		System.out.print("排序結果:");
		for(Integer A:a){
			System.out.print(A + " ");
		}
	}

}

選擇排序的時間複雜度為\Theta (n^{2}),有不足和不對的地方歡迎指出。