C语言、python、go、C#版本选择排序

来源:互联网 发布:软件测试工具使用 编辑:程序博客网 时间:2024/04/29 01:24

C语言版本

#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 版本


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 交换变量非常简单arr=[3,2,5,6,2,4,77,23,643,88,24]select(arr)print(arr)

go语言 版本

// mygo project main.go
package main
import "fmt"
func getminkey(arr []int, n int) (k int) { //go语言的返回值定义在参数后面的括号中。是需要首先定义的
    k = n
    minkey := arr[n]
    count := len(arr)
    for i := n + 1; i < count; i++ {
        if arr[i] < minkey {
            minkey = arr[i]
            k = i
        }
    }
    return k
}
func select_sort(arr []int) {
    len := len(arr)
    for i := 0; i < len; i++ {
        k := getminkey(arr, i)
        if k != i {
            arr[i], arr[k] = arr[k], arr[i] //类似python的非常方便的变量换位
        }
    }
}
func main() {
    var arr = []int{31, 52, 22, 7, 4, 88, 33, 99, 55, 24}
    select_sort(arr)
    len := len(arr)
    for i := 0; i < len; i++ {
        fmt.Println(arr[i])
    }
}

C# 版本

 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# 使用ref引用类型来改变实参的值        {            a = a + b;            b = a - b;            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;        }







1 1