天天看點

java排序算法之選擇排序

選擇排序是表面最穩定的排序算法之一,因為無論什麼資料進去,其時間複雜度都是O(n*n),是以如果你的資料規模不大的話,可以考慮使用選擇排序,因為它是基于記憶體排序的算法,速度很快,

它的工作原理是:在未排序的序列中找到最小(最大)的元素,放在序列的起始位置,然後再從剩餘序列中繼續尋找最小最大元素,放到已排序的元素末尾,以此類推,直到所有的元素都排序完畢;

原理很好了解,下面就來看具體的代碼實作,

//選擇排序
public class SelectionSort {
	
	public static void main(String[] args) {
		int[] arr = {11,18,43,32};
		
		System.out.println("排序前:" + Arrays.toString(arr) + "\r");
		
		System.out.println("排序後:" + Arrays.toString(selectionSort(arr)));
	}
	
	//排序方法
	public static int[] selectionSort(int[] arr){
		if(arr == null || arr.length <= 1){
			return null;
		}
		//外層循環定義排序經曆的輪數
		for(int i=0;i<arr.length;i++){
			int minIndex = i;
			//内層循環為每一輪選擇排序需要進行的資料比較
			for(int j=i;j<arr.length;j++){
				if(arr[j] < arr[minIndex]){		//找到最小的數
					minIndex = j;				//儲存最小數的索引
					
					int temp = arr[minIndex];	//把找到的最小的數放到被比較的數的位置
					arr[minIndex] = arr[i];
					arr[i] = temp;
				}
			}
		}
		return arr;
		
	}
	
}