
数据结构和算法
/*走码观花*/
知其然知其所以然
展开
-
冒泡排序算法代码java【亲测】
冒泡排序详解链接 冒泡排序和冒泡排序改进算法 public class Sort {/** * 冒泡排序 */ void bubbleSort(int arr[],int len){ int i,j,temp,c1=0,c2=0; for(i=0;i<len-1;i++){ for(j=len-...原创 2019-01-03 15:25:53 · 285 阅读 · 0 评论 -
选择排序详解
目录 一、基本思想二、过程示意图三、代码实现过程四、复杂度一、基本思想选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方...原创 2019-01-06 20:36:51 · 886 阅读 · 1 评论 -
堆排序详解
目录一、基本思想二、过程示意图三、代码实现四、复杂度一、基本思想堆排序(英语:Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆又分为大顶堆、小顶堆。例如:大顶堆: 小顶堆: ...原创 2019-01-06 22:10:25 · 690 阅读 · 0 评论 -
java自己实现一个数组【亲测】
自己实现一个数组,详情看代码 数组类 public class MyArray { private long arr[]; /** * actualsubSize实际下标大小,默认为0 */ private int actualsubSize; /** * flag用来标记操作是否成功 */ privat...原创 2019-01-02 18:54:41 · 486 阅读 · 0 评论 -
二分查找法算法【亲测】
在一个有序数组中找到一个数的索引 代码如下:public class MyArrayTest { public static void main(String[] args) { int[] arr=new int[]{1,2,3,4,5}; int f=MyArrayTest.binarySearch(4,arr); i...原创 2019-01-02 22:11:27 · 697 阅读 · 0 评论 -
实现链表的过程详解
目录一、知己知彼0.线性表1.链表2.实现链表需要什么类,类里需要什么属性,什么方法二、开始写代码1.结点类准备2.链表类准备3.链表的插入方法4.链表的显示方法5.链表的查找方法6.链表的删除方法7.链表的长度三、实现链表的完整代码一、知己知彼0.线性表线性表是最基本、最简单、也是最常用的一种数据结构。线性表(linear list...原创 2019-01-07 21:24:21 · 987 阅读 · 0 评论 -
理解递归
目录一、递归定义二、递归实例三、递归分析一、递归定义程序调用自身的编程技巧称为递归( recursion)。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集...原创 2019-01-09 20:53:29 · 221 阅读 · 0 评论 -
用两个栈来实现一个队列,完成队列的Push和Pop操作。
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。栈是先进后出,队列是先进先出。举例:将1,2,3,4,5入队思路:先入栈1(顶-->底:5,4,3,2,1),再将栈1出栈的数据入栈到栈2(顶-->底:1,2,3,4,5),这时栈2出栈的顺序就是先进先出了(1,2,3,4,5)问题:当栈2还有元素时,栈1又入栈元素? 解决:每...原创 2019-04-30 17:44:03 · 935 阅读 · 0 评论 -
快速排序过程详解
目录一、基本思想二、过程示意图三、代码实现过程四、复杂度一、基本思想快速排序(Quicksort)是对冒泡排序的一种改进。也是交换排序。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都 要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变...原创 2019-01-06 17:07:28 · 4611 阅读 · 0 评论 -
冒泡排序过程详解
目录一、基本思想二、过程示意图三、代码实现过程四、算法改进五、复杂度一、基本思想 冒泡排序是交换排序中一种简单的排序方法。它的基本思想是对所有相邻记录的关键字值进行比效,如果是逆序则将其交换,最终达到有序化。其处理过程为: 对序列从后向前依次将相邻记录的关键字进行比较,若逆序(arr[j]<arr[j-1])则将其交换,从而使得关键字值小...原创 2019-01-06 14:23:22 · 13207 阅读 · 0 评论 -
七大排序算法
一、交换排序 冒泡排序 基本思想 :俩俩比较,若发现俩个元素的次序不符合排序要求,则交换位置,直到表中没有不符合排序要求的次序存在。 java实现 :点击查看 实现过程详解:点击查看 快速排序 基本思想 :基于冒泡排序,在待排序序列中,任取其中一个记录(通常是第一个...原创 2019-01-05 22:17:51 · 231 阅读 · 0 评论 -
选择排序算法代码java【亲测】
选择排序算法 public class Sort { /** * 选择排序 */ void selectSort(int arr[],int len){ int min,temp,j,i,c1=0,c2=0; for(i=0;i<len-1;i++){ min=i; ...原创 2019-01-03 15:32:29 · 341 阅读 · 0 评论 -
直接插入排序代码java【亲测】
直接插入排序 public class Sort { /** * 插入排序 */ void insertSort(int arr[],int len){ int i,j,temp; for(i=1;i<len;i++){ if (arr[i]<arr[i-1]){ ...原创 2019-01-03 15:36:07 · 511 阅读 · 0 评论 -
自己实现栈【亲测】
栈类 public class MyStack { /** * 栈底层是数组实现 *栈顶top,为-1时,栈为空 */ private long []arr; private int top; public MyStack(){ arr=new long[10]; top=-1; } ...原创 2019-01-03 21:53:56 · 309 阅读 · 0 评论 -
自己实现队列【亲测】
队列类 public class MyQueue { private long []arr;//底层数组实现 private int front;//队头 private int rear;//队尾 private int size;//队列中有效数据个数 public MyQueue(){ front=0; re...原创 2019-01-03 23:09:07 · 164 阅读 · 0 评论 -
希尔排序算法代码java【亲测】
希尔排序 public class Sort { /** * 希尔排序 */ void shellSort(int k[],int n){ int i,j,temp; int gap=n; do { gap = gap/3 + 1; if(...原创 2019-01-04 17:26:55 · 276 阅读 · 0 评论 -
堆排序算法代码java【亲测】
排序方法 public class Sort { /** * 堆排序 * len是数组实际长度,树的索引是从1开始,并非0开始 * 大顶堆(结果:小—>大) */ //堆排序方法 void heapSort(int arr[],int len){ int i; //1.创建初始堆 ...原创 2019-01-05 14:08:26 · 500 阅读 · 0 评论 -
归并排序算法代码java(递归实现)【亲测】
归并排序 public class Sort { /** *归并排序(递归实现) */ void mergeSort(int []arr,int len){ if (len>1){ //数组中元素个数大于1时执行 //1.将数组分组 int half=l...原创 2019-01-05 16:19:42 · 557 阅读 · 0 评论 -
快速排序算法代码java【亲测】
快速排序 public class Sort { /** * 快速排序 */ void quickSort( int arr[], int low, int high ){ int flag; if(low<high){ flag=partition(arr,low,high); ...原创 2019-01-05 21:56:27 · 351 阅读 · 0 评论 -
整数划分
目录一、整数划分是个什么鬼?二、整数划分过程剖析三、整数划分Java实现四、整数划分案例一、整数划分是个什么鬼?n=m1+m2+...+mi; (其中mi为正整数,并且1 <= mi <= n),则{m1,m2,...,mi}为n的一个划分。 如果{m1,m2,...,mi}中的最大值不超过m,即max(m1,m2,...,mi)<=m,则称它属...原创 2019-08-14 09:26:00 · 577 阅读 · 0 评论