七大排序算法之選擇排序

前言

和冒泡排序一樣,這個也是簡單而必須掌握的基礎排序算法。

原理

遍歷數組每個元素,若爲升序,則尋找最小的數與第一個數交換,一趟排序結束後,最小的數位於數組第一個位置,然後在2-n個數中,尋找最小的元素放在第二個位置,往復下去,排序結束。

時間複雜度

固定:n*n

代碼

public class SelectSort {

	//選擇排序
	//做N趟排序,每一趟選擇最小的數與前面的交換
	
	//時間複雜度  固定的  n*n
	public static void main(String[] args) {
		int[] arr={1,3,2,45,65,33,12};
        System.out.println("交換之前:");
        for(int num:arr){
            System.out.print(num+" ");
        }        
        //選擇排序的優化
        for(int i = 0; i < arr.length - 1; i++) {// 做第i趟排序
            int k = i;
            for(int j = k + 1; j < arr.length; j++){// 選最小的記錄
                if(arr[j] < arr[k]){ 
                    k = j; //記下目前找到的最小值所在的位置
                }
            }
            //在內層循環結束,也就是找到本輪循環的最小的數以後,再進行交換
            if(i != k){  //交換a[i]和a[k]
                int temp = arr[i];
                arr[i] = arr[k];
                arr[k] = temp;
            }    
        }
        System.out.println();
        System.out.println("交換後:");
        for(int num:arr){
            System.out.print(num+" ");
        }
	}

}

下一篇:插入排序

入口在此:點我學習插入排序

發佈了37 篇原創文章 · 獲贊 86 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章