C language version
#include <stdio.h>void swap (int *a,int *b) { *a=*a+*b; *b=*a-*b; *a=*a-*b;} int getminkey (int *arr,int start,int len) { int k = start,i, Minkey=arr[start]; for (i = start + 1; i < Len; i++) { if (Arr[i] < Minkey) { minkey=arr[i]; k=i; } } return k;} void Select_sort (int *arr,int len) { int i; for (i = 0;i < Len; i++) { int k = Getminkey (Arr,i,len); if (k!=i) { swap (&arr[i],&arr[k]); } }} int main (void) { int arr[10]={31,52,22,7,4,88,33,99,55,24}; Select_sort (arr,sizeof (arr)/sizeof (int.)); int i; for (i=0;i<10;i++) { printf ("%d\n", Arr[i]); } return 0;}
Python version
def minkey (arr,n): count=len (arr) k=n mink=arr[n] for i in range (n,count-1): if Arr[i]<mink: Mink=arr[i] k=i return kdef Select (arr): Count=len (arr) i=0for I in Range (0,count-1): K=minkey (arr,i+1) if K!=i:arr[k],arr[i]=arr[k],arr[i] #python swap variable very simple arr=[3,2,5,6,2,4,77,23,643,88,24]select (arr) print (arr)
Go language version
Mygo project Main.go
Package Main
Import"FMT"
Funcgetminkey (arr[]int,nint)(k int) {thereturn value of the//go language is defined in parentheses after the parameter.} Is the one that needs to be defined first
k=n
minkey: =Arr[n]
count: =len (arr)
fori: =n+1; i<count; i++{
ifarr[i]<Minkey{
minkey=Arr[i]
k=i
}
}
returnK
}
Funcselect_sort (arr[]int){
len: =len (arr)
fori: =0; i<Len; i++{
k: =getminkey (arr,i)
ifk!=I {
Arr[i],arr[k]=arr[k],arr[i]//Python-like very handy variable transposition
}
}
}
FuncMain (){
var Arr = []int{ to, the, A, 7, 4, the, -, About, -, -}
Select_sort (arr)
len: =len (arr)
fori: =0; i<Len; i++{
FMT. Println (Arr[i])
}
}
C # version
static void Main (string[] args) {int[] arr = {31, 52, 22, 7, 4, 88, 33, 99, 55, 24}; Selectsort (arr); for (int i = 0; i < arr. Length; i++) {Console.WriteLine (arr[i]); } console.readkey (); } private static void Selectsort (int[] arr) {for (int i = 0; i < arr. Length; i++) {int k = Getminkey (arr, i); if (k! = i) {Swap (ref arr[k],ref arr[i]); }}} private static void Swap (ref int A, ref int B)//c# use ref reference type to change the value of the argument {a = A + b; b = a A; A = a-B; } private static int Getminkey (int[] arr, int n) {int k = n; int min = arr[n]; for (int i = n + 1; i < arr. Length; i++) {if (min > Arr[i]) { min = Arr[i]; K = i; }} return k; }
C language, Python, go, C # version Select sort