[算法] 单链表插入排序(java)】的更多相关文章

实现 首先保证插入前的链表是个完整的,最后一个节点要断开 然后在插入前链表中找到比待插入节点大的最小元素,插到前面即可 Link.java class Link { private class Node { int data; Node next; public Node(int x) { data = x; } public void addNode(Node newNode){ if(this.next == null){ this.next = newNode; }else{ this.n…
一.线性表概述 线性表是指一组数据元素之间具有线性关系的元素序列,它表现为:除第一个元素没有直接前驱元素.最后一个元素没有直接后继元素外,其余所有元素都有且仅有一个直接前驱元素和直接后继元素. 根据存储结构的不同,线性表可以分为顺序存储和链式存储. 1.顺序存储 顺序存储结构是指用一段地址连续的存储单元依次存储线性表的数据元素. 数组就是采用顺序存储结构来存储的,数组元素的保存和读取操作的时间复杂度都是O(1),而插入和删除操作的时间复杂度为O(n),其优缺点如下: 优点 缺点 快速存取,时间复…
链表是动态的数据结构,它的每个元素由一个存储元素本身的节点和一个指向下一个元素的引用(也称指针或链接)组成. 现实中,有一些链表的例子. 第一个就是寻宝的游戏.你有一条线索,这条线索是指向寻找下一条线索的地点的指针.你顺着这条链接去下一个地点,得到另一条指向下一处的线索.得到列表中间的线索的唯一办法,就是从起点(第一条线索)顺着列表寻找. 第二个例子是火车.一列火车是由一些车厢组成的.每节车厢都是相互连接.你很容易分离一节车皮,改变它的位置,添加或移除它.每节车厢都是列表的元素,车厢间的连接就是…
链表中最简单的一种是单向链表,每个元素包含两个域,值域和指针域,我们把这样的元素称之为节点.每个节点的指针域内有一个指针,指向下一个节点,而最后一个节点则指向一个空值.如图就是一个单向链表 一个单向链表的节点被分成两个部分.第一个部分保存或者显示关于节点的信息,第二个部分存储下一个节点的地址.单向链表只可向一个方向遍历. 使用java实现一个简单的单链表,需要定义一个节点类.对节点的操作方法(add .get.remove...) ** * 单链表数据结构简单实现 * * @author jad…
链表相比数组更具灵活性和扩展性.主要有节点数据以及指向节点的指针所构成. 链表中节点的实现[元素和指针]: let Node = function( element ){ this.element = element; this.next = null; }; 单链表的实现: function LinkedList(){ let Node = function( element ){ this.element = element; this.next = null; }; let head =…
排序算法之直接插入排序 舞蹈演示排序: 冒泡排序: http://t.cn/hrf58M 希尔排序:http://t.cn/hrosvb  选择排序:http://t.cn/hros6e  插入排序:http://t.cn/hros0W  快速排序:http://t.cn/ScTA1d  归并排序:http://t.cn/Sc1cGZ 一.直接插入排序的过程 1.直接插入排序由 N-1 趟排序组成.2.基本思想:将第一个元素看成一个有序子序列,再依次从第二个记录起诸葛插入到这个有序的子序列中.…
初次接触java,用java也写了一个链表.代码如下: import java.io.*; class Node{ public int data; //数据域 public Node next; //指针域,全局变量可以不用初始化 public Node(int data1){ data = data1; next = null; } public void display(){ System.out.println("data: "+this.data); } } //定义单链表…
1.引言 工作一年了,感觉越来越懒散,把很多基础性的东西都慢慢遗忘了,最近想趁着还没忘完,回顾一下,整理了点笔记,分享一下. 如有错的地方,欢迎大家怒喷. 2.学习 我们就从最简单的链表开始吧. 链表其实跟数组有点像,都是一串相同类型的元素的集合,最大的不同点在于:数组是一片连续的空间,其中的元素可以通过下标来访问,但删除元素的时候有点麻烦,需要将该元素之后的元素都向前移动一个位置:而链表是通过指针来将一串元素连起来的,前一个元素中存有下一个元素的地址,这些元素不一定是连续的,所以访问的时候不能…
据说单链表反转问题面试中经常问,而链表这个东西相对于数组的确稍微难想象,因此今天纪录一下单链表反转的代码. 1,先定义一个节点类. public class Node { int index; Node next; public Node(int index, Node next) { this.index = index; this.next = next; } } 2,我一共写了三种方法 (1)迭代法.先将下一节点纪录下来,然后让当前节点指向上一节点,再将当前节点纪录下来,再让下一节点变为当…
//一直以为java中没有指针,其实java的引用就是指针,只不过堆栈中的引用储存了在堆中的地址,可以看做java中的指针.public class sibgleLink<E> { // 结点内部类 private class Node { private Object data; private Node next = null; public Node() { data = null; } // 带数据的构造函数 public Node(E data) { this.data = data…