数据结构与算法
NongfuSpring-wu
这个作者很懒,什么都没留下…
展开
-
动态数组
动态数组扩容private void resize(int NewCapacity){ E[] Newdata = (E[]) New Object(newCapacity); for(i=0;i<size;i++) Newdata[i]=data[i]; data = Newdata;}符合扩容的条件时,调用时直接resize(...原创 2019-06-21 10:12:23 · 90 阅读 · 0 评论 -
插入排序(Insertion sort)
定义:插入排序(Insertion sort)是一种简单直观且稳定的排序算法。如果有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方...原创 2019-08-21 14:19:32 · 249 阅读 · 0 评论 -
选择排序算法
对于O(n^2)的排序算法 只有在编码简单,易于实现的简单情况下才会选择。选择排序选择排序是一种基础的排序算法,其基于数组的数据结构,这样的数据结构具有很强的灵活性,之所以说具有很强的灵活性呢,我们知道数组和顺序线性表结构是一种简单的存储结构,因为他们在逻辑上相邻的元素在物理内存之上也是彼此相邻的。而且同一个数组的数据类型必须是一致的,这样我们就可以通过数组的下标[index]进行随机顺序...原创 2019-08-21 11:09:04 · 188 阅读 · 0 评论 -
定义一个数组
数组基础把数组马成一排进行存放,数组分为索引和对应的值,索引从0开始,最大为n-1数组的索引可以没有语义,也可以有语义,但并非所有有语义的索引都适用数组,数组最大优点是可以快速查询制作属于我们自己的数组size 实际数组中元素数, capacity 代表数组容量定义一个数组,包含数组类型、数组名、数组容量(数组长度即可不用单独定义)、数组中元素数几个私有变量,注意定义数组容量...原创 2019-08-11 17:32:58 · 5720 阅读 · 0 评论 -
java数组使用泛型
为何要使用泛型? 为了让我们的数据结构可以放置“任何”数据类型,但是不可以是基本数据乐行,只能是类对象。boolean , byte ,char ,short , int , long ,float , double每个基本数据类型都有对应的包装类Boolean , Byte ,Char , Short ,Int, Long , Float ,Double声明类时p...原创 2019-08-14 16:38:15 · 746 阅读 · 0 评论 -
栈(stack)
栈(stack) 栈也是一种线性结构 相比数组,栈对应的操作是数组的子集,且栈只能从一端添加元素,也只能从一端取出元素,这一端称之为栈顶。栈是一种后进先出的数据结构,last in first out (LIFO)后进先出栈的应用: 无处不在的Undo操作(撤销) 打字时发现打错了字可以撤销,撤销的都是最后输入的文字。 程序调用的系统栈...原创 2019-08-19 16:22:27 · 223 阅读 · 0 评论 -
动态数组
如果数组是不变的,当数据大小超过了数组的容量则会导致内存不足,如果数据过少,开辟的数组容量过大会造成空间的浪费。此时可以设计一个随着存储的数组元素动态调整数组容量大小,就较为方便。如何设置数组空间大小就较为关键了。数组装满需要另外开辟一个新的数组空间新的数组容量翻倍将原来的数组的值对应赋值到新的数组空间中去原来的引用data也同时指向新的空间java的垃圾回收机...原创 2019-08-19 14:28:09 · 130 阅读 · 0 评论 -
java中对数组的基本操作(增删改查。。。)
1、向数组后添加元素数组后添加元素很简单,只要在当前size外置放置即可,并且更新size,size后移一位,size++。2、向数组指定位置添加元素指定位置添加元素原则:若该位置无元素直接放入,若该位置有元素占据,从该位置起往后所有元素往后挪1位,将位置腾出来后放入要插入的元素即可。3 在数组中查询元素(1)通过索引查询某个位置的元素(2)通过索引替换某个位置元素...原创 2019-08-14 09:54:53 · 1877 阅读 · 0 评论 -
数组中查询元素和修改元素
查询元素获取Index索引位置元素int get(int Index){ if(Index<0 ||Index>=0) throw new IllegalArgumentException("get failed,Index is illegal."); return data[Index];}修改元素void set(int Index, int...原创 2019-06-18 11:31:08 · 420 阅读 · 0 评论 -
向数组中添加元素
size指向数组中第一个没有元素的位置 capacity指的是数组容量1、向数组的最后添加元素方法的代码块展示即在size的位置添加元素,size再加1//在第Index位置插入一个元素public void addLast(int e){ if(size==data.length) throw new IllegalArg...原创 2019-06-18 10:18:30 · 2329 阅读 · 0 评论 -
栈(stack)和队列
栈也是一种线性结构。相比数组,栈对应的操作是数组的子集只能从一端添加元素,也只能从一端取出元素,这一端称为栈顶。栈是一种后进先出的数据结构。(Last in First out LIFO结构)栈的应用——无处不在的Undo操作(撤销) word或者其他编辑器采用的撤销程序调用的系统栈栈的基本操作Stack<E>void push(E) 入栈...原创 2019-06-22 10:16:56 · 115 阅读 · 0 评论 -
基于java的数组封装属于自己的数组类(动态数组)
通过创建数组类,建立私有属性保持数组的封装性,通过公有属性方法对数组进行操作,代码如下:public class Array { private int[] data; private int size;// 构造函数,传入数组的容量capacity构造Array public Array(int capacity){ data = new int[capacity...原创 2019-06-17 19:13:35 · 710 阅读 · 0 评论 -
选择排序法
排序思路:从小到大排序 先从数组所有元素中选取最小的元素替换第一个位置的元素,接着从第二个位置开始选取最大的元素替换第二各元素,一直如此操作到第arry.length-1个位置时,最后一个便是最大的元素。排序完成。c++实现代码如下:#include <iostream>using namespace std;template <template T>//...原创 2019-06-17 15:32:45 · 83 阅读 · 0 评论 -
归并排序
概念:归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。归并排序并不常用,看起来时间复杂度好像是几种排序中最低的,比快排的时间复杂度还要低,但是它的执行速度不是最...原创 2019-08-30 11:53:24 · 80 阅读 · 0 评论