数据结构
Thinking Town
这个作者很懒,什么都没留下…
展开
-
Java单链表的实现(增删改、逆序输出、查找倒数第n个节点)
单链表介绍链表的增删改节点定义节点增加节点修改节点删除链表的逆序输出链表查找倒数第n个节点完整代码介绍单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表是以节点的方式来存储的,用head作为基点,每个节点包含data域和next域(指针域)。data域用来存储数据,next指定下一节点。如下图:链表的增删改节点定义//定义Node, 每一个Node就...原创 2020-04-01 20:13:13 · 831 阅读 · 0 评论 -
java二分查找(查找的值又单个符合值,多个符合值及List的排序)
二分查找二分查找介绍符合值有一个符合值有多个List排序二分查找介绍二分查找是对有序序列的排序** 算法思路**1、定义数据中间的下标mid=(left+right)/22、把查找的value与arr[mid]进行比较若value<arr[mid],则right=mid-1,进行左递归若value>arr[mid],则left=mid+1,进行右递归若value==...原创 2020-03-30 12:03:07 · 306 阅读 · 0 评论 -
java实现希尔排序
希尔排序介绍交换法实现移动法实现介绍希尔排序是插入排序的一种又称“缩小增量排序”,是直接插入排序算法的一种更高效的改进版本。其平均时间复杂度突破了O(n^2),为O(nlogn)。插入排序一般来说是低效的,希尔排序解决了插入排序每次只能将数据移动一位的情况,可以把较小的数据快速移动到其正确的位置。希尔排序以一定增量对序列进行分组,分组排序后,增量减半,再次进行排序,直至增量为1,排序完成。...原创 2020-03-30 11:27:35 · 99 阅读 · 0 评论 -
Java实现插入排序
插入排序介绍实现介绍基本思想: 把n个待排序的序列看成为一个有序表和无序表,开始时把待排序序列的第1个元素看成是有序表,无序表中包含n-1个元素,排序时循环从无序表中取值与有序表中,插入到正确的位置。如下图实现public class InsertSort { public static void insertSort(int[] arr) { //把后面的无序列按有序列往前插入...原创 2020-03-29 09:20:16 · 82 阅读 · 0 评论 -
java实现选择排序
java实现选择排序算法介绍实现算法介绍选择排序:从头至尾扫描序列,循环排列arr.length-1次,每一次循环找出序列中最小值,用index记录其下标,放到序列最前方,下一次循环应跳过有序序列如下图实现public class SelectSort { public static void selectSort(int[] arr) { for(int i=0;i<ar...原创 2020-03-27 12:33:05 · 95 阅读 · 0 评论 -
Java之冒泡排序的实现与优化
@TOC冒泡排序介绍冒泡排序:类似于水中冒泡,较大的数沉下去,较小的数慢慢冒起来,假设从小到大,即为较大的数慢慢往后排,较小的数慢慢往前排。其平均时间复杂度为O(n^2 ),最差情形的时间复杂度为O(n^2),最好的情形时间复杂度为O(n)。较为适合数据量较小的排序实现:利用双重循化遍历数组1、外循环遍历arr.length-1次把最大的数放到最后2、内循环比较相邻的arr.length...原创 2020-03-26 12:33:14 · 72 阅读 · 0 评论 -
数组实现简单的队列与循环队列
数组实现栈队列的定义简单的栈循环队列实例队列的定义队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。在队尾插入元素,在队首删除元素,如同我们排队买票简单的栈用front与rear来跟踪定位。入队列时rear移动,直至队列已满(rear= =maxsize-1),出队列时front移动,返回数据,直至队列已空(front==rear)class ArrayQu...原创 2020-03-25 22:10:18 · 121 阅读 · 0 评论