分享
  1. 首页
  2. 文章

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

zhouqinghe24 · · 2286 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

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 k
def select (arr):
	count=len(arr)
	i=0
	for 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语言 版本

//mygoprojectmain.go
packagemain
import"fmt"
funcgetminkey(arr[]int,nint)(kint){//go语言的返回值定义在参数后面的括号中。是需要首先定义的
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的非常方便的变量换位
}
}
}
funcmain(){
vararr=[]int{31,52,22,7,4,88,33,99,55,24}
select_sort(arr)
len:=len(arr)
fori:=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;
 }








有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:zhouqinghe24

查看原文:C语言、python、go、C#版本选择排序

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
2286 次点击
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏