数据结构与算法
梦里梦见醒不来丶
未来可期
展开
-
九九乘法表
闲着无聊写个乘法表package com.xujd.suanfa;public class jiujiu { @org.junit.Test public void method(){//99乘法表 for(int i=1;i<=9;i++){ for(int j=i;j<=9;j++){ System原创 2017-06-14 15:13:21 · 590 阅读 · 0 评论 -
一致性哈希算法
一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简 单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正得到应用。 一致性hash算法提出了在动态变化的Cache环境中,判定哈希算法好坏的四个定义:1、平衡性(Balance):平衡转载 2017-09-04 19:48:04 · 378 阅读 · 0 评论 -
abcde 要求输出 a b c d e ab bc cd de abc bcd cde abce bcde abcde
package com.xujd.suanfa;import org.junit.Test;import com.xujd.util.TextUtil;public class date5for25 {//有时间复杂度小于O(n*n)的欢迎指导 /** * abcde 要求输出 a b c d e ab bc cd de abc bcd cde abce bcde abcd原创 2017-06-14 17:07:52 · 3316 阅读 · 1 评论 -
堆排序
思想: 堆排序是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构(通常堆是通过一维数组来实现的),并同时满足堆的性质:即子结点的键值总是小于(或者大于)它的父节点。实现步骤:创建一个堆把堆顶元素(最大值)和堆尾元素互换把堆的尺寸缩小1,并调用heapify(A, 0)从新的堆顶元素开始进行堆调整重复步骤2,直到堆的尺寸为1宏观实现图: 动画中在排序过程之前简单的表现原创 2017-06-14 17:01:08 · 552 阅读 · 0 评论 -
归并排序
思想: 归并排序是创建在归并操作上的一种有效的排序算法,效率为O(nlogn),1945年由冯·诺伊曼首次提出。 归并排序的实现分为递归实现与非递归(迭代)实现。递归实现的归并排序是算法设计中分治策略的典型应用,我们将一个大问题分割成小问题分别解决,然后用所有小问题的答案来解决整个大问题。非递归(迭代)实现的归并排序首先进行是两两归并,然后四四归并,然后是八八归并,一直下去直到归并了整个数组原创 2017-06-14 16:55:33 · 537 阅读 · 0 评论 -
快速排序
思想: 选择一个基准元素,通常选择第一个元素或者最后一个元素,通过一趟扫描,将待排序列分成两部分,一部分比基准元素小,一部分大于等于基准元素,此时基准元素在其排好序后的正确位置,然后再用同样的方法递归地排序划分的两部分。实现步骤: 快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序n个元素要O(nlogn)次比较。在最坏状况下则需要O(n^2)次比较,但这种状况并不常见。事实上,快速原创 2017-06-14 16:41:36 · 461 阅读 · 0 评论 -
插入排序
思想: 将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列, 然后从第2个记录逐个进行插入,直至整个序列有序为止。 要点:设立哨兵,作为临时存储和判断数组边界之用。 如果碰见一个和插入元素相等的,那么插入元素把想插入的元素放在相等元素的后面。所以,相等元素的前后顺序没有改变,从原无序序列出去的顺序就是排好序后的顺序,所以插入排序是原创 2017-06-14 16:28:45 · 523 阅读 · 0 评论 -
冒泡排序
思想: 冒泡排序是一种极其简单的排序算法,也是我所学的第一个排序算法。它重复地走访要排序的所以元素,一次比较相邻两个元素,如果他们的顺序错误就把他们调换过来,直到没有元素再需要交换,排序完成。这个算法的名字由来是因为越小(或越大)的元素会经由交换慢慢“浮”到数列的顶端或者下沉到底部。实现过程:(假如要求从小到大排序) 1.比较相邻的元素,如果前一个比后一个大,就把它们两个调换位置原创 2017-06-14 15:33:49 · 501 阅读 · 0 评论 -
选择排序
思想: 选择排序也是一种简单直观的排序算法。它的工作原理很容易理解:在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止。实现过程: 第一趟,从n 个记录中找出关键码最小的记录与第一个记录交换; 第二趟,从第二个记录开始的原创 2017-06-14 16:10:55 · 332 阅读 · 0 评论 -
Java实现栈
栈:先进后出基于数组实现的栈/** * 基于数组实现的栈 * @author XuJD * @create 2019-01-17 17:26 **/public class StackTest { private String[] data = null; private int maxSize = 0; private int top = -1; ...原创 2019-01-17 19:03:38 · 247 阅读 · 0 评论