排序算法-選擇排序(Java)

選擇排序

選擇排序也屬於內部排序法,是從想要排序的數據中,按指定的規則選出某一個元素,在依據規定交換位置後達到排序的目的

選擇排序的基本思想是:

  1. 第一次從arr[0]~arr[n-1]中選出最小值,與arr[0]交換位置
  2. 第二次從arr[1]~arr{n-1}中選出最小值,與arr[1]交換位置
  3. 第三次從arr[2]~arr[n-1]中選出最小值,與arr[2]交換位置
  4. 以此類推下去進行交換位置
  5. 總共通過n-1次交換,最後便得到一個有序序列

選擇排序的思維分析圖:
在這裏插入圖片描述
選擇排序的思路圖解
假如原始的數組爲:101,34,119,1
在這裏插入圖片描述
接下來上代碼

	public static void selectSort(int [] arr){
		//arr.length - 1是因爲最後一個元素不需要比較,因爲這個元素後面沒有值了
		for(int i = 0; i < arr.length - 1; i++){
			int minIndex = 0;//最小值的索引
			int min = arr[i];//假設當前數組中的值就是最小值
			for(int j = 0; j < arr.length ; j++){//循環結束後min就是最小值
				if(min > arr[j]){//如果當前最小值比後面元素大,則需要交換元素值
					min = arr[j];
					minIndex = j;//並記錄元素下標
				}
			}
			//條件不等證明已經進行了數據交換
			if(minIdex != i){
				arr[minIndex] = arr[i];//將當前元素賦值到剛纔確定的最小元素的索引位置
				arr[i] = min;//將最小元素賦值給當前元素
			}
		}
		
	}

以上就是選擇排序的代碼,主要就是在與每一次循環都是找到最小的值,在放到外層循環的當前元素的位置,如果有數據交換則賦值替換位置,沒有則不換位置,繼續下一次循環

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章