• 排序算法05-选择排序(用C++、C#、lua实现)






    本文为排序算法-选择排序的代码实现。
    作者水平比较差,有错误的地方请见谅。

    1、选择排序

    简单选择排序:每次选择一个最小的值放到前面。

    2、C#实现

    SelectSort.cs

    public static class SelectSort
        {
            public static void Select(int[] numbers)
            {
                if (numbers == null || numbers.Length < 2)
                {
                    Console.WriteLine("参数数组有误");
                    return;
                }
    
                //寻找length-1次最小值
                for (int i = 0; i < numbers.Length-1; i++)
                {
                    int minIndex = i;
                    int minNum = numbers[i];
                    //每次找到最小值放到i的位置
                    for (int j = i; j < numbers.Length; j++)
                    {
                        if (numbers[j] < minNum)
                        {
                            minIndex = j;
                            minNum = numbers[j];
                        }
                    }
                    //i位置值和每次找到的最小值交换
                    if (minIndex != i)
                    {
                        int temp = numbers[i];
                        numbers[i] = numbers[minIndex];
                        numbers[minIndex] = temp;
                    }
                }
            }
        }
    

    Program.cs

    class Program
        {
            static void Main(string[] args)
            {
                int[] numbers = { 49, 38, 65, 97, 76, 13, 27, 49 };
                SelectSort.Select(numbers);
    
                for (int i = 0; i < numbers.Length; i++)
                {
                    Console.Write(numbers[i] + " ");
                }
                Console.WriteLine();
    
                Console.ReadKey();
            }
        }
    
    

    3、C++实现

    SelectSort.cpp

    ///选择排序
    class SelectSort
    {
    public:
        static void Select(int numbers[],int length);
    };
    
    void SelectSort::Select(int numbers[],int length)
    {
        if (numbers == NULL || length < 2)
        {
            cout<<"参数数组有误"<<endl;
            return;
        }
    
        for (int i = 0; i < length-1; i++)
        {
            int minIndex = i;
            int minNum = numbers[i];
            for (int j = i; j < length; j++)
            {
                if (numbers[j] < minNum)
                {
                    minIndex = j;
                    minNum = numbers[j];
                }
            }
            if (minIndex != i)
            {
                int temp = numbers[i];
                numbers[i] = numbers[minIndex];
                numbers[minIndex] = temp;
            }
        }
    }
    
    

    main.cpp

        int numbers[] = {49,38,65,97,76,13,27,49};
        int length = sizeof(numbers)/sizeof(numbers[0]);
    
        SelectSort::Select(numbers,length);
    
        for(int i=0;i<length;i++){
            cout<<numbers[i]<<" ";
        }
        cout<<endl;
    

    4、lua实现

    numbers = {49,38,65,97,76,13,27,49}
    length = #numbers
    
    
    function SelectSort(nums)
    	local length = #nums
    	if (nums == nil or length < 2) then
    		print("参数数组有误")
    		return
    	end
    
    	for i=1,length-1,1 do
            local minIndex = i
            local minNum = numbers[i]
            for j=i,length,1 do
                if (numbers[j] < minNum) then
                    minIndex = j
                    minNum = numbers[j]
                end
            end
    		
            if (minIndex ~= i) then
                local temp = numbers[i]
                numbers[i] = numbers[minIndex]
                numbers[minIndex] = temp
            end
        end
    end
    
    
    
    
    SelectSort(numbers)
    
    for i=1,length,1 do
    	io.write(numbers[i] .. ' ')
    end
    print()
    
    
    

    5、新知识和疑问

  • 相关阅读:
    HBase入门,看这一篇就够了
    【从零开始学CenterNet】6. CenterNet之loss计算代码解析
    cobbler使用DTK自动化做RAID
    linux批量免密登陆
    《ASP.NET Core 与 RESTful API 开发实战》-- (第8章)-- 读书笔记(下)
    《ASP.NET Core 与 RESTful API 开发实战》-- (第8章)-- 读书笔记(中)
    Python基础-v1
    js实现二维数组转置
    冰蝎3.0 流量特征分析 附特征
    关于 PDF相关整改建议的pdf后门事件分析
  • 原文地址:https://www.cnblogs.com/Fflyqaq/p/11823641.html
Copyright © 2020-2023  润新知