C語言、python、go、C#版本選擇排序

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

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;        }







聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.