数据结构与算法(Java)
文章平均质量分 62
没学过数据结构与算法这门课,所以自己一边学一边写笔记,分享给大家一块学习!
ai低吟浅唱
这个作者很懒,什么都没留下…
展开
-
数据结构与算法(12)---Java语言实现:堆排序(续)
换一种更清晰的写法:package 算法;//堆排序//三个核心方法:构建大顶堆;调整堆;交换数据public class Demo8{ // 交换数据 public static void change(int[] arr,int a,int b){ int temp1=arr[a]; arr[a]=arr[b]; arr[b]=temp1; } //调整堆 pu原创 2017-12-31 10:00:14 · 918 阅读 · 0 评论 -
数据结构与算法(11)---Java语言实现:堆排序
堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特点快速定位指定索引的元素。堆分为大根堆和小根堆,是完全二叉树。大根堆的要求是每个节点的值都不大于其父节点的值,即A[PARENT[i]] >= A[i]。在数组的非降序排序中,需要使用的就是大根堆,因为根据大根堆的要求可知,最大的值一定在堆顶。堆排序的时间,主要由建立初始原创 2017-10-06 16:12:39 · 949 阅读 · 0 评论 -
数据结构与算法(10)---Java语言实现:归并排序
归并排序是利用递归和分治法(Divide and Conquer)将待排序的序列划分成越来越小的半子表,再对半子表进行排序,然后再用递归的方法队排好序的半子表进行合并成为越来越大的有序序列。Java代码示例:package 算法;//归并排序(递归实现)public class Demo6 { //升序合并子表 public static void merge(int[] arr,原创 2017-09-24 14:21:15 · 598 阅读 · 0 评论 -
数据结构与算法(9)---Java语言实现:希尔排序
希尔排序(Shell Sort)是改进型的插入排序的一种,也称缩小增量排序。它比普通插入排序的效率要更高。希尔排序是非稳定排序算法。该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。因为直接插入排序在元素基本有序的情况下(接近原创 2017-09-21 21:50:24 · 884 阅读 · 0 评论 -
数据结构与算法(8)---Java语言实现:插入排序
插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,是稳定的排序方法。排序原理图,仅供参考。算法Java实现代码:package 算法;//插入排序public class Demo4 { public static void InsertSort(int arr[]){ for(int i=1原创 2017-09-20 14:39:39 · 739 阅读 · 0 评论 -
数据结构与算法(7)---Java语言实现:快速排序
快速排序(Quicksort)是对冒泡排序的一种改进。快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。要排序的数组是A[0]……A[N-1],首先任原创 2017-09-19 15:26:05 · 878 阅读 · 0 评论 -
数据结构与算法(6)---Java语言实现:冒泡排序
冒泡排序算法的运作如下:比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。算法的Java代码实现:package 算法;原创 2017-09-11 15:03:44 · 583 阅读 · 0 评论 -
数据结构与算法(5)---Java语言实现:选择排序
选择排序(Selection sort)是一种简单的排序算法,其原理是每一次都从待排序的数据元素中找到最小的或者最大的元素并和无序数据的第一个位置进行交换,这样无序位置的第一个位置变成有序的,然后继续对剩下的无序数据进行比较,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)。算法Java代原创 2017-09-11 11:07:09 · 686 阅读 · 0 评论 -
数据结构与算法(4)---Java语言实现:队列的单链表定义
队列是一种特殊的线性表,它只允许从队列首(front)取数据,从队列尾(rear)插入数据,是一种FIFO(first in first out)结构。package 数据结构;public class QueueList { private int size; private Slinklist front; private Slinklist rear; public Q原创 2017-09-07 14:55:56 · 733 阅读 · 0 评论 -
数据结构与算法(3)---Java语言实现:栈的单链表定义
栈(stack)是一种受限制的线性表,只能在线性表的一端进行插入和删除,是先进后出(FILO—First-In/Last-Out)的结构。下面是用单链表来定义堆栈。单链表的定义参看系列博文的第一篇。package 数据结构;public class StackList { public Slinklist top; public int size; //构造方法 p原创 2017-09-05 11:21:36 · 552 阅读 · 0 评论 -
数据结构与算法(2)---Java语言实现:线性表的单链表定义:方法补充,实现单链表反转,去重
补充上一节内容,在上一节内容的基础上补充去重的方法和实现链表反转的方法。package 数据结构;import javax.xml.soap.Node;public class Bclist extends Xianxingbiao{ //获取线性表的长度 public int length(){ int length=0; Slinklist p=head;原创 2017-09-04 16:40:08 · 1010 阅读 · 0 评论 -
数据结构与算法(1)---Java语言实现:线性表的单链表定义
单链表的结点定义:package 数据结构;//定义单链表的数据类型,存储数据以int型为例public class Slinklist { private int data; private Slinklist next=null; public Slinklist(int data,Slinklist next){ this.data=data; this.next原创 2017-09-01 17:44:56 · 646 阅读 · 0 评论