• 数据结构和算法 – 1.基础排序算法


    冒泡

    选择

    插入

    数组的大小会使算法的性能产生很大的差异。选择排序比冒泡排序快了 100 多倍,而且选择排序比插入排序快了 200 多倍。
    当数组元素量增加到 10000 个的时候,确实能看出数组大小对三种排序算法的影响。

    优先级:选择排序 > 冒泡排序 > 插入排序

    image

    1.冒泡排序

    public static int[] MaoPao(int[] arr)
            {
                //执行多少次
                for (int i = 0; i < arr.Length; i++)
                {
                    //每执行1次,把最大的放在最后
                    for (int j = 0; j < arr.Length - 1; j++)
                    {
    int a = arr[j];
                        int b = arr[j + 1];
                        if (a>b)
                        {
                            arr[j+1] = a;
                            arr[j] = b;
                        }
                    }
                }
                return arr;
            }

    方法2

    public static int[] MaoPao2(int[] arr)
            {
                //执行多少次
                for (int i = arr.Length - 1; i >= 1; i--)
                {
                    //每执行1次,把最大的放在最后
                    for (int j = 0; j <= i - 1; j++)
                    {
    int a = arr[j];
                        int b = arr[j + 1];
                        if (a > b)
                        {
                            arr[j + 1] = a;
                            arr[j] = b;
                        }
                    }
                }
                return arr;
            }

    image

     

    2.选择排序

    找最晓小的,放在前面,再找第2个小的,直到找完。

    public static int[] XuanZhe(int[] arr)
            {
                int min, temp;
                //执行多少次
                for (int i = 0; i < arr.Length; i++)
                {
                    min = i; //最小值先取当前第1个
                    //j从第2个值开始取
                    for (int j = i + 1; j < arr.Length; j++)
                    {
                        if (arr[j] < arr[min])
                        {
                            min = j;
                        }   
                    }
                    //先把最小值取出来了,再操作
                    temp = arr[i];
                    arr[i] = arr[min];
                    arr[min] = temp;
                }
                return arr;
            }

    image

     

    3.插入排序

    后面一个和前面几个比较,是放前面,中间,还是后面。

    //插入排序
            public static int[] InsertSort(int[] arr)
            {
                int inner, temp;
                //执行多少次
                for (int i = 0; i < arr.Length; i++)
                {
                    temp = arr[i];
                    inner = i;
                    while (inner > 0 && arr[inner - 1] >= temp)
                    {
                        arr[inner] = arr[inner - 1];
                        inner -= 1;
                    }
                    arr[inner] = temp;
    
                    foreach (var item in arr)
                    {
                        Console.Write(item + " ");
                    }
                    Console.WriteLine();
                }
                return arr;
            }

    image

    冒泡和选择排序耗时差不多,插入耗时要长1半。。

  • 相关阅读:
    题解:SPOJ1026 Favorite Dice
    机器学习笔记
    机器学习第二次作业
    机器学习第一次作业
    2019软工实践总结作业
    软工2019作业6——软件评测
    2019软工作业五-实现师门树
    软件工程 “校园汇” 个人IDEA竞选分析与总结
    软工2019作业四
    软工2019作业三
  • 原文地址:https://www.cnblogs.com/tangge/p/5338734.html
Copyright © 2020-2023  润新知