数据结构与算法
Batac_
中国北方小镇的田园村落
展开
-
归并排序(java)
分组操作数量级减少//临时数组 以空间换时间private static int[] assist;//数据数组private static int[] datas;//初始化数据datas = new int[]{4, 3, 2, 10, 12, 1, 5, 6, 11, 7};System.out.println("原始数据:"+ Arrays.toString(datas));//开始排序sort(datas);System.out.println(Arrays.t原创 2020-12-25 17:01:12 · 137 阅读 · 0 评论 -
希尔排序(java)
public static void shell(int[] array){ int h=array.length/2; while (h >= 1){ for (int i=h;i<array.length;i++){//分组 for (int j=i;j>=h;j-=h){//每组进行插入排序 if (array[j-h]>array[j]){ int.原创 2020-12-03 18:33:49 · 118 阅读 · 0 评论 -
RSA算法原理
1.RSA是什么?RSA是一种非对称加密算法; 分为公钥与私钥,公钥公开作为其他人加密使用,私钥自己保留作为解密使用; RSA是当今广泛使用最安全的加密算法之一;2.基础数学知识中国剩余定理-求余(韩信点兵问题)5 mod 3 = 2 10 mod 4 = 2 14 mod 3 = 2 14 mod 4 = 2 说明:14与2以4为模同余; 10^2 mod 3 = 13...原创 2019-08-25 14:25:17 · 306 阅读 · 0 评论 -
手动实现动态数组二(java)
package com.batac;/** * Author: Batac * 动态数组: * 数组: 是一种连续存储结构的线性表; * 优点: 查询速度快, 根据地址直接查找到元素(寻址法); * 缺点: 插入与删减元素速度差, 最差需要移动其他所有元素 */public class ArrayList<E> { //数组 private E[]...原创 2020-04-18 21:39:18 · 214 阅读 · 0 评论 -
手动实现动态数组(java)
数据结构:线性表, 树, 图, 集合等; 线性表: 是包含n个相同元素的有限序列; 数组是一种:内存连续的线性表; 动态数组: 动态的扩容与缩容, (缩容没有实现);//方法列表:public int sise();public boolean isEmpty();public boolean contains(int element);public void add(int e...原创 2020-04-16 23:50:57 · 224 阅读 · 0 评论 -
八.归并排序(python)
采用分治思想,再而两两排序合并def merge_sort(alist): """归并排序""" n = len(alist) if n<= 1: return alist mid = n // 2 # left 采用归并排序后形成的有序的新的列表 left_list = merge_sort(alist[:mid]...原创 2019-08-05 12:16:18 · 122 阅读 · 0 评论 -
七.二分查找(python)
代码:def binary(alist,item): """二分查找-递归方式""" n = len(alist) if n > 0: mid = n // 2 if alist[mid] == item: return (mid,True) elif alist[mid] < ite...原创 2019-08-05 11:41:57 · 136 阅读 · 0 评论 -
六.快速排序(python)
class QuickSort: def __init__(self): pass def quick_sort(self,array): """快速排序""" if len(array) < 2: return array else: first = arr...原创 2019-08-02 17:21:35 · 105 阅读 · 0 评论 -
五.快速排序
static public void quitSort(int biao,List<Integer> list,int beginIndex,int endIndex) { int pivot;//没记记录中间的值得索引 if (beginIndex<endIndex) { pivot = partition(biao, list, beginIndex, end...原创 2019-06-02 15:50:13 · 162 阅读 · 0 评论 -
四.希尔排序
说明:希尔排序是在直接插入排序的基础上进行优化; 分块进行比较,时间复杂度突破O(n^2); 希尔排序进行分组后,每组进行插入排序,分组值有大变小;原创 2019-05-20 15:18:59 · 210 阅读 · 0 评论 -
三.直接插入排序
直接插入排序实现代码:说明:直接插入排序主要是设置哨兵; 每次与前一位进行比较,如果小则,更换哨兵,进行移位比较; 哨兵还有一个重要作用就是:防止移位比较的时候溢出; 一 /** * 时间更少 * @param list */ static public void straightInsertionSort2(List<Integer> list) { ...原创 2019-05-20 15:16:50 · 211 阅读 · 0 评论 -
二.简单选择排序
思想:每次找出最小值,记录下标;简单选择排序代码实现: static public void simpleSelectionSort(List<Integer>list) { int min = 0; for(int i=0;i < list.size()-1;i++){ for(int j = i+1;j<list.size();j++){...原创 2019-05-20 15:11:31 · 311 阅读 · 0 评论 -
一.冒泡排序
冒泡排序方法代码实现://冒泡排序主要实现一, static public void buddleSort(List<Integer> list) { for(int i=0;i<list.size();i++){ for(int j = i+1;j < list.size();j++){ if (list.get(i) > list....原创 2019-05-20 15:09:26 · 133 阅读 · 0 评论 -
数据结构之环形链表
public boolean hasCycle(ListNode head) { if (head == null || head.next == null)return false; ListNode lowNode = head;//使用快慢指针的方法 ListNode fastNode = head.next.next; ...原创 2019-05-04 17:40:17 · 345 阅读 · 0 评论 -
数据结构之反转链表
public ListNode reverseList(ListNode head) { if (head == null || head.next == null) return head; ListNode newHead = null;//创建新链表 while(head != null){ ListNode oldn...原创 2019-05-04 17:27:22 · 330 阅读 · 0 评论 -
数据结构之动态数组
Batac联系方式:1763781716@qq.com几种数据结构:集合,线性结构,树形结构,图形结构:说明:线性表的顺序存储结构:数组 数组:一次性申请一定量的内存空间; 动态数组:不断的扩容,重新申请更大的内存空间; 实现动态数组:public class ArrayList<E> {/*** 元素个数*/private int siz...原创 2019-04-26 17:32:06 · 308 阅读 · 0 评论 -
数据结构之线性表
数据结构分为逻辑结构和物理结构:逻辑结构分为集合结构、线性结构、树形结构和图形结构四大类。 物理结构分为顺序存储结构和链式存储结构线性表是线性结构的一种,那么线性表当然也有物理结构,也就是说,线性表有两种,分别是顺序结构的线性表(叫做顺序表)和链式结构的线性表(叫做链表)。线性表的顺序存储结构顺序存储定义:线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据...原创 2019-04-17 11:27:12 · 203 阅读 · 0 评论