
数据结构与算法
Java、Scala、Python等
MelodyYN
实践
展开
-
单链表的增删改查(Java)
文章目录单链表的增删改查(Java)1、单链表的特点2、单链表的功能3、单链表的实现3.1 节点的构造3.2 链表的框架4、主体功能实现4.1 增加功能4.2 删除功能4.3 修改功能4.4 查询功能4.5 遍历功能5、main方法测试 单链表的增删改查(Java) 1、单链表的特点 相较于数组,插入数据效率高,查询效率低、空间利用率低(因为指针域的存在)。 2、单链表的功能 节点的构造 单链表的功能 增:头插法、尾插法和在指定索引位置插入 增:有序链表 删:删除指定索引节点和删除所有指定值的节点 改:原创 2022-01-13 22:11:43 · 897 阅读 · 2 评论 -
快速排序思路
思想: 快速排序采用分而治之的思想。 任取待排序序列的第一个元素作为中心元素,习惯将其称为pivot,枢轴元素; 将所有比枢轴元素小的放在其左边; 将所有比它大的放在其右边; 形成左右两个子表; 然后对左右两个子表再按照前面的算法进行排序,直到每个子表的元素只剩下一个。 将一个数组分成两个数组的方法为: 先从数组右边找到一个比枢轴元素小的元素,将数组的第一个位置赋值为该元素; 再从数组的左边找到一个比枢轴元素大的元素,将从上面取元素的位置赋值为该值; 依次进行,直到左右相遇,把枢轴元素赋值到相遇位置。转载 2021-11-04 14:50:58 · 169 阅读 · 0 评论 -
剑指 Offer 09. 用两个栈实现队列
剑指 Offer 09. 用两个栈实现队列 文章目录剑指 Offer 09. 用两个栈实现队列1、题目2、分析3、知识基础4、Java实现5、扩展:使用两个队列实现栈 1、题目 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) 2、分析 队列的特点:先进先出 栈的特点:先进后出 分析: 由题意,声明两个两个栈stack1和stack2原创 2021-12-09 15:30:55 · 265 阅读 · 0 评论 -
归并排序思想
思想: 采用经典的分治(divide-and-conquer)策略。 (分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。 import java.util.Arrays; public class MergeSort { public static void main(String[] args) { int []arr= new int[]{2,5,3,10,-3,1,6,4};转载 2021-11-04 16:00:13 · 178 阅读 · 0 评论 -
剑指 Offer 06. 从尾到头打印链表
剑指 Offer 06. 从尾到头打印链表 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 思路: ①:通过栈的特点去实现 准备一个空栈,将链表中的元素依次入栈; 创建一个数组,依次出栈。 ②:直接将结果倒序放入数组中 遍历链表统计长度,再创建出指定长度的数组; 遍历数组,将链表内容逆序放入数组中。 实现: ①:通过栈的特点去实现 public class Solution { public int[] reversePrint(ListNode head) {原创 2022-01-06 16:55:58 · 496 阅读 · 0 评论 -
选择排序(Java)
简单选择排序 思想: 与冒泡类似,但没有冒泡交换的那么频繁。 前一部分是有序的,有序部分的后一个位置为待排序位置。待排序位置将与后边最小的元素进行位置交换。 一趟确定一个元素的位置。 package com.atguigu.array; public class ArraySelect { public static void main(String[] args) { int[] arr = new int[]{2,5,7,4,1,9}; System.out.p原创 2021-12-30 21:55:45 · 367 阅读 · 9 评论 -
冒泡排序及其优化(Java)
冒泡排序 冒泡排序,一趟确定一个最大元素的位置。 在下一趟中缩小遍历空间(因为后面的都是有序的了)。 循环往复直至全体有序。 最主要的是遍历的过程其实就是不停比较相邻元素,若前者大于后者则进行交换;否则后移一位继续此过程。 稳定性 时间复杂度 空间复杂度 稳定 O(n2)O(n^2)O(n2) O(1)O(1)O(1) 冒泡排序是稳定排序,不会改变数据的大小相对位置; 时间复杂度最坏的情况为O(n2)O(n^2)O(n2),最好的情况为O(n)O(n)O(n)。 冒泡排序的临时变量所占原创 2021-12-30 21:08:08 · 991 阅读 · 0 评论