function selectionSort(arr){ var len = arr.length; var minIndex, temp; for(var i =0; i < len -1; i++){ minIndex = i; for(var j = i +1; j < len; j++){ if(arr[j]< arr[minIndex]){// 尋找最小的數 minIndex = j;// 將最小數的索引儲存 } } temp = arr[i]; arr[i]= arr[minIndex]; arr[minIndex]= temp; } return arr; }
Python 代碼實現
實例
def selectionSort(arr): for i inrange(len(arr) - 1): # 記錄最小數的索引 minIndex = i for j inrange(i + 1,len(arr)): if arr[j]< arr[minIndex]: minIndex = j # i 不是最小數時,將 i 和最小數進行交換 if i != minIndex: arr[i], arr[minIndex]= arr[minIndex], arr[i] return arr
Go 代碼實現
實例
func selectionSort(arr []int)[]int{ length :=len(arr) fori:=0;i < length-1;i++{ min :=i for j :=i+1; j < length; j++{ if arr[min] > arr[j]{ min = j } } arr[i], arr[min]= arr[min], arr[i] } return arr }
void swap(int*a,int*b)//交換兩個變數 { int temp =*a; *a =*b; *b = temp; } void selection_sort(int arr[],int len) { int i,j;
for(i =0; i < len -1; i++) { int min = i; for(j = i +1; j < len; j++)//走訪未排序的元素 if(arr[j]< arr[min])//找到目前最小值 min = j;//紀錄最小值 swap(&arr[min],&arr[i]);//做交換 } }
C++
實例
template<typename T>//整數或浮點數皆可使用,若要使用物件(class)時必須設定大於(>)的運算子功能 void selection_sort(std::vector<T>& arr){ for(int i =0; i < arr.size()-1; i++){ int min = i; for(int j = i +1; j < arr.size(); j++) if(arr[j]< arr[min]) min = j; std::swap(arr[i], arr[min]); } }
C#
實例
staticvoid selection_sort<T>(T[] arr)where T :System.IComparable<T>{//整數或浮點數皆可使用 int i, j, min, len = arr.Length; T temp; for(i =0; i < len -1; i++){ min = i; for(j = i +1; j < len; j++) if(arr[min].CompareTo(arr[j])>0) min = j; temp = arr[min]; arr[min]= arr[i]; arr[i]= temp; } }
Swift
實例
import Foundation /// 選擇排序 /// /// - Parameter list: 需要排序的數組 func selectionSort(_ list: inout [Int])-> Void { for j in0..<list.count -1{ var minIndex = j for i in j..<list.count { if list[minIndex] > list[i]{ minIndex = i } } list.swapAt(j, minIndex) } }
class SelectionSort { /** * 拓展IntArray爲他提供數據兩個數交換位置的方法 * @param i 第一個數的下標 * @param j 第二個數的下標 */ fun IntArray.swap(i:Int,j:Int){ var temp=this[i] this[i]=this[j] this[j]=temp } fun selectionSort(array: IntArray):IntArray{ for (i in array.indices){ //假設最小值是i var min=i var j=i+1 while (j in array.indices){ if (array[j]<array[min]){ min=j } j++ } if (i!=min){ array.swap(i,min) } } return array; }}