前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第5期 ARTS 打卡计划

第5期 ARTS 打卡计划

作者头像
闻人的技术博客
发布2020-06-24 10:37:15
2980
发布2020-06-24 10:37:15
举报
文章被收录于专栏:程序员闻人

ARTS 起源

关于 ARTS:一个需要持续地坚持的高效学习项目,每周写一个ARTS:Algorithm 是一道算法题,Review 是读一篇英文文章,Tips 是分享一个小技术,Share 是分享一个观点。

本周 ARTS
  • A: 快速排序
  • R: The Problem With Logging
  • T: vim 操作文件如何显示行号
  • S: 掌握 SOLID 设计原则

Algorithm:快速排序

来源:《漫画算法》

如何用代码来实现【快速排序】算法。

思路:分治法 & 递归

通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

代码语言:javascript
复制
public static void quickSort(int[] array, int startIndex, int endIndex) {
    // 递归结束条件
    if (startIndex >= endIndex) {
        return;
    }
    // 获取基准元素位置
    int pivotIndex = partition(array, startIndex, endIndex);
    // 以基准元素为界,分成两部分递归排序
    quickSort(array, startIndex, pivotIndex - 1);
    quickSort(array, pivotIndex + 1, endIndex);
}

private static int partition(int[] array, int startIndex, int endIndex) {
    // 取第一个位置为基准元素(0)
    int pivot = array[startIndex];
    int left = startIndex;
    int right = endIndex;
    // 控制 left 指针右移,right 指针左移,直至相碰结束
    while (left != right) {
        // right 比较,大于基准就左移,小了停止;
        while (left < right && array[right] > pivot) {
            right--;
        }
        // left 比较,小于基准就右移,大了停止;
        while (left < right && array[left] <= pivot) {
            left++;
        }
        // right 和 left 都停止后进行交换
        if (left < right) {
            int temp = array[left];
            array[left] = array[right];
            array[right] = temp;
        }
    }
    //基准与left和right相交位置进行交换
    int tmp = array[left];
    array[left] = array[startIndex];
    array[startIndex] = tmp;

    // 返回当前的基准位置
    return left;
}

Review:The Problem With Logging

来源:《左耳听风》推荐

https://blog.codinghorror.com/the-problem-with-logging/ 评论:不要过度使用日志 在文章中作者表达对程序打印日志行为的看法,并抵制程序过度打印日志的做法。最后作者推荐日志记录尽量简单短小,主要在明显和关键的错误上进行日志记录。对于特定需求,只加少量的日志。

Tip:vim 操作文件如何显示行号

方法一:单文件显示

在 vim 命令模式下,输入 : set nu

nu 是 number 的缩写。

方式二:全局配置显示

找到 ~/.vimrc 文件或者 /etc/vimrc 文件,添加一行 set nu 即可。

扩展:如何跳转到指定行

在 vim 命令模式下,输入 :n 指令,跳转到第 n 行。

Share:掌握 SOLID 设计原则

主题:深入理解 SOLID 设计原则
地址

https://www.yuque.com/docs/share/714e08c7-1d6a-4670-a4cb-8aa026f43ada?#

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 闻人的技术博客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ARTS 起源
    • 本周 ARTS
    • Algorithm:快速排序
      • 来源:《漫画算法》
        • 思路:分治法 & 递归
        • Review:The Problem With Logging
          • 来源:《左耳听风》推荐
          • Tip:vim 操作文件如何显示行号
            • 方法一:单文件显示
              • 方式二:全局配置显示
                • 扩展:如何跳转到指定行
                • Share:掌握 SOLID 设计原则
                  • 主题:深入理解 SOLID 设计原则
                    • 地址
                    相关产品与服务
                    日志服务
                    日志服务(Cloud Log Service,CLS)是腾讯云提供的一站式日志服务平台,提供了从日志采集、日志存储到日志检索,图表分析、监控告警、日志投递等多项服务,协助用户通过日志来解决业务运维、服务监控、日志审计等场景问题。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档