学算法并非和语言无关

本文探讨了学习算法过程中编程语言的重要性,通过介绍基本快速排序的实现,强调了理解算法背后的逻辑与选择合适的编程语言相辅相成。同时,作者分享了关于用户体验(UE)在算法学习中的启示。
摘要由CSDN通过智能技术生成

1. 写在前面

      算法这个东西,本来不是什么特别复杂的东西,就是为了解决某个问题提出的一个解决方案,说白了,就是一种思路。基本上,所有的算法书上都默认选用了伪代码来表达算法,因为这样可以脱离具体的语言,让算法学习者能够直面算法的本质,理解算法的核心,然后使用自己常用的语言来重新表达,写出能够运行的代码。实际上,在我接触到ruby这类高表达力的语言前,我也这么认为。虽然我能够理解很多算法的核心本质,但往往在实际用C或者java来实现时,总是被一些数组索引等细枝末节的问题所折磨,我通常会告诉自己,嗷,我还没有深刻领悟它,再去看看算法图述和伪码。
     但是,今天我想说,我错了。也许,有的语言能够更好地表述算法,表述算法的好的语言应该能够以最接近人类语言的方式表达出来,而且基本就能够运行出结果。

2. 基本快速排序

    下面是关于快速排序的official描述:
快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists)。
步骤为:
从数列中挑出一个元素,称为 "基准"(pivot),
重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值