算法
编程日常用到的基本算法的介绍和实现
lucky.麒麟
一样魔前千古间,独看桑蝶化人间。一叹求魔千万年,几多轮回古葬边。
展开
-
Java数据结构之数组队列和循环队列的实现
队列基于数组的实现的队列// 动态数组的封装public class Array<E> { private E[] data; private int size; /** * 数组扩容 * @param newCapacity */ private void resize(int newCapacity) { ...原创 2019-01-21 17:33:11 · 201 阅读 · 0 评论 -
Java数据结构之数组栈的实现
栈栈是一种后进先出的数据结构Last In First Out (LIFO)首先依托Array组数的实现public class Array<E> { private E[] data; private int size; /** * 数组扩容 * @param newCapacity */ private vo...原创 2019-01-21 17:31:53 · 195 阅读 · 0 评论 -
Java数据结构之对数组的操作
数组的基础实现public class Array { private int[] data; private int size; /** * 构造函数 * @param capacity */ public Array(int capacity) { data = new int[capacity]; ...原创 2019-01-20 12:20:27 · 165 阅读 · 0 评论 -
Java数据结构之链表实现栈和队列
栈的实现// 栈的基本方法public interface Stack<E> { void push(E e); E pop(); E peek(); int getSize(); boolean isEmpty();}// 链表的基本方法的实现public class LinkedList<E> { p...原创 2019-01-18 15:38:13 · 600 阅读 · 0 评论 -
Java数据结构之链表的基本操作
链表 Linked List数据存储在“节点”中优点真正的动态,不需要处理固定容量的问题缺点丧失了随机访问的能力数组和链表的对比数组最好用于索引有语意。最大优点:支持快速查询链表不适合用于索引有语意的情况最大优点:动态代码实现public class LinkedList&lt;E&gt; { private Node head; private...原创 2019-01-18 14:38:51 · 563 阅读 · 0 评论 -
每天一个算法(5): 线性查找
线性查找说明:线性查找适合于存储结构为顺序存储或链接存储的线性表。 思想:对于一个顺序储存的数据,线性查找就是从这顺序数据的头开始遍历到尾,如何匹配到数据就说明查找到了,如果没有则返回没有查找到数据。 代码现实:public class Line { public static void line_search(int arr[], int tmp){ i...原创 2018-07-06 13:35:24 · 1331 阅读 · 1 评论 -
蓝桥杯 入门训练四道题
第一题: 入门训练 Fibonacci数列重点: 在本题中,答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出Fn的准确值, 再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单。 这句话已经告诉你怎么写程序了!#include <iostream>using namespace std;int main() { ...原创 2018-02-12 12:08:44 · 621 阅读 · 0 评论 -
单链表基本操作C语言实现
/** 单链表的基本操作实现*/#include<stdio.h>#include<stdlib.h>#include<time.h>#include<iostream>using namespace std;typedef int ElemType;typedef struct Node{ ElemType data; struct Node *next;} N原创 2017-12-07 16:40:03 · 751 阅读 · 0 评论 -
顺序表C++模板实现
#include<iostream>using namespace std;const int MAXSIZE = 20;template <class T>class SqList{private: T *data; int length;public: SqList(); //构造函数 ~SqList(); // 析构函数 void Crea原创 2017-12-06 16:57:05 · 402 阅读 · 0 评论 -
顺序表基本操作C++实现
代码实现:#include<iostream>using namespace std;const int MAXSIZE = 20;class SqList{private: int *data; int length;public: SqList(); //构造函数 ~SqList(); // 析构函数 void CreatList(int a[原创 2017-12-06 16:42:42 · 9543 阅读 · 0 评论 -
顺序表基本算法的是实现
主要用了C++的的C部分的语法,定义结构体,实现了顺序表的创建、插入、删除、输出功能。#include<stdio.h>#include<typeinfo> //输出数据类型的头文件: typeid(Element).name()#include<iostream>using namespace std;#define MAXSIZE 20 //存储空间的初始分配量typedef in原创 2017-12-06 15:00:19 · 1572 阅读 · 0 评论 -
每天一个算法(1):冒泡排序(java)
冒泡排序原理 : 依次比较相邻的两个数,将小数放在前面,大数放在后面。 复杂度: 最差–&gt; O(n2) / 平均–&gt; O(n2) / 稳定性–&gt; 稳定示意图 : 原数组:[10, 3, 2, 1, 0, 5, 4, 7, 8, 9] 第1次:[3, 10, 2, 1, 0, 5, 4, 7, 8, 9] 第2次:[3, 2, 10, ...原创 2018-06-28 01:38:06 · 229 阅读 · 0 评论 -
每天一个算法(2):插入排序(java)
插入排序就像我们整理扑克牌一样:摸起一张牌,然后将牌插入到合适位置; 示意: 需要被排序的数组: [10, 3, 2, 1, 0, 5, 4, 7, 8, 9] 第1次: [3, 10, 2, 1, 0, 5, 4, 7, 8, 9] 将3插入有序数组【10】之中 第2次: [2, 3, 10, 1, 0, 5, 4, 7, 8, 9] 将2插入有序数组【3、10】之中...原创 2018-06-28 12:07:31 · 132 阅读 · 0 评论 -
每天一个算法(3):选择排序(java)
选择排序选择排序另一种非常基本的排序算法, 也和我上一篇写的插入排序一样将数组分为有序和无序两个部分, 而选择排序是将无序数组部分的最最小(最大)和有序部分比较交换。 示意: 原数组:[10, 3, 2, 1, 0, 5, 4, 8, 7, 9] 最小值是:0 –&gt; 下标 : 4 第0次: [0, 3, 2, 1, 10, 5, 4, 8, 7, 9] 最小值是:1 –&gt...原创 2018-06-28 12:57:11 · 224 阅读 · 0 评论 -
每天一个算法( 4 ) : 快速排序 ( java )
快速排序原理 : 快速排序之所比较快,是因为相比冒泡排序,每次交换是跳跃式的。每次排序的时候设置一个基准点,将小于等于基准点的数全部放到基准点的左边,将大于等于基准点的数全部放到基准点的右边。这样在每次交换的时候就不会像冒泡排序一样每次只能在相邻的数之间进行交换,交换的距离就大的多了。因此总的比较和交换次数就少了,速度自然就提高了。 演示 : 演示数组 : [5, 3, 2, 1...原创 2018-06-28 17:24:32 · 441 阅读 · 0 评论