- 博客(26)
- 资源 (18)
- 收藏
- 关注
原创 经典基础排序算法的最后一个——基数排序
(欢迎大家关注我的同名微信公众号:代码两三事)十大经典排序算法中有三个线性排序算法,除了前面写过的桶排序、计数排序,就是基数排序。(英语:Radix sort)是一种非比较型,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数。基数排序的发明可以追溯到1887年在(Tabulation Machine)上的贡献[。这里举例子继续用正整数举例。
2025-03-06 08:44:17
886
原创 特殊化的桶排序 —— 计数排序算法
(欢迎大家关注我的同名微信公众号:代码两三事)上次写了桶排序,今天写计数排序。其实计数排序是桶排序的特殊情况。桶排序开始的时候是定义几个“桶”出来,然后将数据装入划分好的桶里,桶内再做排序,排序完成后将数据从桶中依次倒出来即可完成排序。计数排序特殊的地方在于,如果我们发现待排序的数据为,并且就可以将桶排序特殊化,从而得出计数排序。下面从计数排序的算法操作步骤来看一下计数排序的细节,顺便看看为什么说计数排序是桶排序的特殊化。
2025-03-06 08:39:18
727
原创 基础排序算法 —— 桶排序
十大经典排序算法里面冒泡、插入、选择排序时间为O($n^2$),归并、快排、堆排序这些排序时间为O(nlogn),此外还有三种更快的排序算法为桶排序,基数排序,计数排序。后面这三种排序时间为O(n),因此也被称之为线性排序算法。桶排序一般是分这几步来操作:先定义一组或者说几个有序的“桶”使用映射函数将数组内的数据映射到各自对应的“桶”内在每个“桶”内进行排序(归并、插入、快排等等都可以)按顺序将每个”桶“内的数据依次取出,就可以输出一个有序的数组/数列。
2025-03-05 12:23:17
819
原创 经典基础排序算法 —— 希尔排序
希尔排序的称呼蛮多的,什么“递减增量排序算法”,什么“缩小增量排序算法”,其实希尔排序本质上算是一个分组插入排序算法,可以称之为插入排序的plus版本。查询百度百科可以知道算法是1959年提出,作者D.L.Shell。
2025-03-05 12:20:53
674
原创 快速搞定基础排序算法 —— 归并排序
今天开始搞归并排序。归并排序是借助于操作来实现快速排序的算法。但归并操作有个前提,即合并的两个子序列本身必须是有序的。所以实现归并排序时的第一步就是对无序数组做切割,切成一个个的有序子序列;第二步再对这些生成的有序子序列两两进行合并,即归并操作。第三步,重复第二步。针对合并过的序列继续归并,直到全部合并完成。至此就完成了归并排序操作。归并排序可以说是分治法的典型应用。先切割数组,再对切割后的子串层层递归合并,每个子串合并可以同时进行而不互相影响。并且排序速度非常快,仅次于快排。
2025-03-04 07:45:08
838
原创 两分钟搞定快速排序
快速排序也是属于十大经典排序算法之一。号称是所有排序算法中性能最好的排序算法。但事无绝对,极端情况下快速排序也会退化,退化后的性能为O(n^2)。
2025-03-04 07:41:50
975
原创 基于 Kotlin KMP 实现 HarmonyOS 与 Android 双平台 SDK 开发实践
两端的 context 如何抹平?context 的处理,方式 1;就是回避这个问题,例如上面的 demo 中,获取 context 是为了获取文件处理的路径。那么选择将 root 根路径直接从函数接口注入即可。方式 2;将各个平台的 context 注入到对应的平台 target 部分。例如 android 的注入到 androidMain 部分,commonMain 再通过定义expectactual来调用 android 端的能力。在这种跨端项目中如何实现异步操作?两端的异步操作如何平衡?
2025-03-03 08:02:35
1659
2
原创 本地部署体验文生图模型Flux 和 Deepseek 的 Janus Pro -7B
人工智能这么火,作为程序员肯定不能免俗。听了大佬们的建议上来就买了这本:结果发现这学习曲线有点陡,搞的有点自闭。所以转换一下思路,先从学习别人的科普视频 + 体验AI 模型开始。这次本地部署文生图模型。Flux 和 Deepseek 的 Janus Pro -7B起初部署这个模型使用的 Flux + ComfyUI 的方案,结果没成功。换了个方式,从 App store 直接安装 Draw Things。这种就比较简单。安装好Draw Things 后再下载 Flux.1 [dev] 模型就行。输入提示词,
2025-03-03 08:00:35
961
原创 有意思的堆排序和堆
堆简介经典的十大排序算法中有一种算法叫做堆排序。堆排序是借助于堆这种特殊的数据结构来实现的一种排序算法。说起堆的时候大家脑海里的第一反应就是一个树状的数据结构。其实堆是一类数据结构的统称,堆有二叉堆,二项堆,斐波那契堆,左偏树等等。堆排序就是借助于二叉堆(binary heap)来实现的。二叉堆是完全二叉树,同时满足堆的特性:父节点的键值总是保持固定的序关系于任何一个子节点的键值,并且每个节点的左子树和右子树都是一个二叉堆。当父节点的值总是大于或者等于任何一个子节点的时候称为最大堆或者大顶堆、大根堆
2021-05-16 16:41:16
215
原创 超简单的插入排序
插入排序和冒泡、选择一样都算是一种超级简单的排序算法。插入排序名字里有个插入,它的排序算法确实和插入这个动作有关。基本思想是把数据分为两部分,一部分已经排好序,另外一部分待排序。然后将一个待排序的元素插入到已排序元素的合适位置。最终得到一个排好序的元素集合。算法步骤将第一个元素看为是已经排好序的集合,从二个元素开始到末尾认为是待排序集合;从待排序集合的第一个位置拿出元素,标记为新元素;从已排序元素集合的末尾开始往前扫描,如果元素大于新元素,则向后挪动一位;重复步骤3,直到找到的已排序元素小于或者
2021-05-09 23:45:28
722
2
原创 一分钟搞定基础排序算法——选择排序
选择排序可以看做是冒泡排序的一个改进型。工作原理也是非常的简单:(此处用从小到大排序举例)第一轮,整个数组从0号位开始,从左到右遍历一遍,找出最小的元素,将其放在数组的0号位。第二轮,从1号位开始遍历一遍,找出最小值,将其放在数组的1号位。以此类推直到结束。就完成了选择排序。尝试实现如上图所示,有一个待排序的数组nums。按开头时讲述的算法步骤。第一趟,从0号位开始我们从左到右遍历,找出最小值。此时准备3个指针。i直接指向0号位,标记此时的未排序数组的第一个位置。index,指向找到的最小值(开始时暂
2021-05-05 20:25:29
333
原创 什么是冒泡排序?
什么是冒泡排序?最近开始重学算法。先从最简的冒泡排序开始。这里做个笔记方便后面复习。对于冒泡排序算法的定义,相对于其他资料,百度百科里的介绍相对详细一点——冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降
2021-05-05 20:20:24
3561
原创 经典排序算法--Java实现
import removeNthFromEnd.ListNode;import studyproxy.staticproxy.MaskInterface;import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;public class ClassicSort { publ...
2019-01-29 14:54:10
171
原创 kotlin-android-extensions 插件无效问题
导入了几个第三方库后突然发现viewid部分代码飘红.查看文件顶部,发现导入的kotlinx.android.syntheticandroidx.recyclerview.widget.LinearLayoutManager这些库出现异常。此外studio还自动导入了一个import xx.xx.R.id.*删掉马上又自动导回来。检查build.gradle 文件ap...
2019-01-04 15:53:21
10314
4
原创 kotlin 写的Android toast工具类
原文地址:https://rongi.github.io/kotlin-blog/kotlin/2017/06/28/toast.htmlGoogle的时候翻到了一个别人用kotlin实现的toast工具类感觉很棒,特别记录一下:实现fun Any.toast(context: Context, duration: Int = Toast.LENGTH_SHORT): Toas...
2019-01-03 09:28:02
3902
原创 Kotlin ARouter 集成错误记录
Kotlin ARouter 集成错误记录先写结论:在module的 build.gradle文件中添加apply plugin: 'kotlin-android'apply plugin: 'kotlin-kapt'apply plugin: 'kotlin-android-extensions' kapt {arguments {arg("AROUTER_M...
2019-01-02 15:53:09
12586
3
原创 两数相除-kotlin
给定两个整数,被除数dividend和除数divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数dividend除以除数divisor得到的商。示例1:输入: dividend = 10, divisor = 3输出: 3示例2:输入: dividend = 7, divisor = -3输出: -2说明:被除数和除数均...
2018-12-25 14:49:05
5976
原创 kotlin的相等性 == 和===
kotlin的相等性 == 和===对kotlin的相等性做个简单的记录kotlin中有两种类型的相等性结构相等引用相等结构相等这个可以简单的理解为判断内容是否相等(Java的equals方法),使用的是 == 符号来实现kotlin中的a == b等价于下面这种a?.equals(b) ?: b == null这个kotlin写法翻译为Java可以用下面这种写法表...
2018-12-21 14:55:04
1535
原创 括号生成(kotlin)
给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[ "((()))", "(()())", "(())()", "()(())", "()()()"]这个问题第一反应是暴力穷举。n为几,就创建几对括号,然后排列组合,去掉重复和无效的。例如n=1,就是生成两组() 括号,编号为A1(...
2018-12-07 14:56:33
384
原创 删除链表的倒数第N个节点 (Java)
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗? 思路很简单,采用双指针pre 和index,开始时两个都指...
2018-12-06 15:17:41
652
原创 最接近的三数之和(kotlin)
给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).解法参考的是三数之和,简单修改一下就行...
2018-12-06 13:58:26
280
原创 三数之和(kotlin)
给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]] 第一反应是穷举...
2018-12-06 11:02:25
386
原创 罗马数字转整数(kotlin)
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1...
2018-12-05 17:02:13
221
原创 整数转罗马数字
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1...
2018-12-05 16:08:50
263
原创 python 爬虫错误记录
1、UnicodeDecodeError: 'utf-8' codec can't decode byte 0xcf in position 116: invalid continuation byte问题原因:html = response.read().decode('utf-8'),代码里面这样读取网页,但是目标小说网站的网页编码为gbk解决办法:html = response.re...
2018-10-10 15:00:29
398
原创 Android sudio 编译工程错误记录
Android studio 编译工程报错,做个简单的记录1、Cause: com.android.build.gradle.tasks.factory.AndroidJavaCompile.setDependencyCacheDir(Ljava/io/File;)Vstudio导入https://github.com/manuelvicnt/RxJava2-MVVM-Android...
2018-10-09 16:47:01
8186
Java加密与解密的艺术 第二版(清晰+书签+完整版).pdf
2018-05-15
Android2.0 中读取联系人——ContactsContract
2010-03-15
Android新手开发入门(使用于对android零基础的初学者)
2010-03-03
Google Android SDK开发范例大全 第四章- - 史上超豪华的手机控件
2009-08-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人