摘要: 时间复杂度O(logn),很强 适用于数组的数据结构,但不适用于链表,因为链表不支持随机访问 只能查找有序数组,如果是无序的,需要进行一次排序(最低时间复杂度O(nlogn)) 数据量小不适用,直接用遍历查找即可 数据量太大也不适用,因为数据结构是数组,需要的是连续的内存空间 #include <i 阅读全文
posted @ 2020-08-02 21:30 程序员曾奈斯 阅读(805) 评论(0) 推荐(0)
摘要: 优先使用归并排序(因为归并排序空间复杂度是O(n),并且是稳定排序算法,时间复杂度O(nlogn)) 当需排序的数据量比较大的时候,改为使用优化快排(比如三数取中获取分区点) 当快排时,排序的元素个数小于7时,快排退化为插入排序 传统的快排算法,由于分区点选的不好,可能就会导致算法效率过低。常用分区 阅读全文
posted @ 2020-08-02 19:55 程序员曾奈斯 阅读(311) 评论(0) 推荐(0)
摘要: 从尾到头打印链表(要求不改变链表结构) 反转链表(要求仅遍历一次链表) 合并两个有序链表(非递归方法) 删除倒数第k个节点 链表中环的入口节点(包括判断环的存在,确定环中节点个数等问题) 求链表中间节点 ListNode.h #pragma once #include <iostream> usin 阅读全文
posted @ 2020-08-02 10:16 程序员曾奈斯 阅读(370) 评论(0) 推荐(0)