C#数据结构与算法》--2020 最新精讲版:4-4 数组栈、链表栈性能比较

博主通过观看B站《C#数据结构与算法》教程,为了提高学习效率,进行实战练习,对比了数组栈和链表栈在删除操作上的性能。通过编写代码和运行测试,发现即使不扩容的数组栈在执行速度上也优于链表栈,而官方Stack由于优化,其性能表现更佳。
摘要由CSDN通过智能技术生成

目录

 一.目的

1.想:将B站视频《C#数据结构与算法》--2020 最新精讲版:提高学习效率,所以编写此系列博客

2.因为这个系列教程评价目前是最好的,所以想看视频、写代码、写博客

二.参考

1.C#数据结构与算法》-3-4 删除链表中的结点

三.注意

1.你可以忘记代码,也不能忘记 演示动画:因为记住了演示动画,思路就有了,写代码就有了思路

四.操作:1:成功

1.时间复杂度分析

1.运行效果:数组栈:运行时间比较

1.1 扩容和不扩容的数组栈时间比较

1.运行效果:

1.运行结果:官方Stack栈耗时真的很少,因为他们不开源,他们有自己的算法工程师,进行不断地优化


 一.目的

1.想:将B站视频《C#数据结构与算法》--2020 最新精讲版:提高学习效率,所以编写此系列博客

2.因为这个系列教程评价目前是最好的,所以想看视频、写代码、写博客


二.参考

1.C#数据结构与算法》-3-4 删除链表中的结点

3-4 删除链表中的结点https://www.bilibili.com/video/BV1gE41157pC?p=12

  1. 学习的视频

三.注意

1.你可以忘记代码,也不能忘记 演示动画:因为记住了演示动画,思路就有了,写代码就有了思路

四.操作:1:成功

1.时间复杂度分析

 

1.运行效果:数组栈:运行时间比较

1.1 扩容和不扩容的数组栈时间比较

        /// <summary>
        ///[功能:测试栈耗时]  [Author:XZY Time:20211022 视频编号:4-3 链表栈]
        /// </summary>
        /// <param name="stack">栈</param>
        /// <param name="N">栈里面的长度</param>
        /// <returns></returns>
        public static long TestStack(IStack<int> stack,int N)
        {
            Stopwatch t = new Stopwatch();
            t.Start();
            for (int i = 0; i < N; i++)
                stack.Push(i);

            for (int i = 0; i <N; i++)
                stack.Pop();

            t.Stop();
            return t.ElapsedMilliseconds;
        }
        static void Main(string[] args)
        {
            int N = 1000000;

            //Array1Stack<int> array1Stack = new Array1Stack<int>();//不扩容的方式创建对象
            Array1Stack<int> array1Stack = new Array1Stack<int>(N);//扩容的方式创建对象
            long t1 = TestStack(array1Stack, N);
            Console.WriteLine("array1Stack‘time=" + t1 + "ms");
        }

 

 

1.运行效果:

  • 链表创建时候是:不连续、访问空的地址、还需要做好下一个节点的连接,所以比较耗时 

        /// <summary>
        ///[功能:测试栈耗时]  [Author:XZY Time:20211022 视频编号:4-3 链表栈]
        /// </summary>
        /// <param name="stack">栈</param>
        /// <param name="N">栈里面的长度</param>
        /// <returns></returns>
        public static long TestStack(IStack<int> stack,int N)
        {
            Stopwatch t = new Stopwatch();
            t.Start();
            for (int i = 0; i < N; i++)
                stack.Push(i);

            for (int i = 0; i <N; i++)
                stack.Pop();

            t.Stop();
            return t.ElapsedMilliseconds;
        }

        static void Main(string[] args)
        {
            int N = 1000000;

            Array1Stack<int> array1Stack = new Array1Stack<int>();//不扩容的方式创建对象
            //Array1Stack<int> array1Stack = new Array1Stack<int>(N);//扩容的方式创建对象
            long t1 = TestStack(array1Stack, N);
            Console.WriteLine("array1Stack‘time=" + t1 + "ms");

            LinkedList1Stack<int> linkedList1Stack = new LinkedList1Stack<int>();
            long l2 = TestStack(linkedList1Stack, N);
            Console.WriteLine("linkedList1Stack‘time=" + l2 + "ms");
        }

1.运行结果:官方Stack栈耗时真的很少,因为他们不开源,他们有自己的算法工程师,进行不断地优化

 

            //测试:3:Stack栈 的耗时
            Stack<int> stack = new Stack<int>(N);
            Stopwatch t = new Stopwatch();
            t.Start();
            for (int i = 0; i < N; i++)
                stack.Push(i);

            for (int i = 0; i < N; i++)
                stack.Pop();

            t.Stop();
            Console.WriteLine("Stack‘time=" + t.ElapsedMilliseconds + "ms");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值