
数据结构与算法
文章平均质量分 60
带着天使反上帝 - Kaybee
一些笔记:https://liukay.github.io/KaybeeNotes/#/?id=kaybeenotes
展开
-
算法学习 -- 快速排序
快速排序快速排序(Quicksort)是与归并排序一样都是采用一种分治法策略。快速排序将数组分成两部分,但是与归并排序不同的是,不是分成数组的两半,快排从数组中选出一个支点(pivot),然后按照下列规则重新排列数组元素:1.支点所在的位置就是最后排好序的数组中它所在的位置;2.比支点小的元素位于支点的前面;3.比支点大的元素位于支点的后面。像这样排列一次称为一次划分。然后持续划分下去直到数组原创 2016-10-08 20:28:56 · 392 阅读 · 0 评论 -
算法学习(三)----归并排序
归并排序 归并排序(merge sort)将一个数组分为两半,对这两半分别排序,再将它们归并成为一个有序数组。归并排序通常以递归的形式来实现。递归算法将一个问题的解法表达为同一个问题的规模更小的版本,这样的策略称为是一种分治法(divide and conquer)。归并排序原理图示: 在归并排序中,待归并排序的两个有序的数组实际上是原数组的两半。也就是说,将原数组分为两半,对这两半分原创 2016-10-07 22:06:29 · 324 阅读 · 0 评论 -
算法学习(二)----堆排序
堆排序堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。 堆排序原理图示: 堆节点的访问通常堆是通过一维数组来实现的。为了方便我这里把数组起始为0的位置赋值为0.则:父节点k的左子节点在位置:2k父节点k的右子节点在位置:2k+1堆的实现1.首先初始化序列:pu原创 2016-10-06 19:42:23 · 262 阅读 · 0 评论 -
算法学习(一)----基本排序算法
冒泡排序选择排序插入排序希尔排序1.冒泡排序原理:序列中的元素两两比较,小(大)的元素交换到大(小)的元素前面,就像气泡从水中浮出一样。 //优化后的冒泡排序 public void BubbleSort(int[] arr){ boolean flag=true;//设置标识可以减少对基本有序序列的排序 for (int i = 0; i原创 2016-10-05 21:35:36 · 334 阅读 · 2 评论 -
算法学习(五)----基本排序算法总结
前几天学习几个基本的排序算法,下面来总结一下算法分类在维基百科上有排序算法的一张图,红线是我之前总结学习的。 从我们学习的排序算法中可以分为两类:简单排序有冒泡、选择、插入排序;改进算法有希尔、堆排序、归并排序和快速排序。 快速排序是冒泡的升级版,属于交换排序;希尔排序是直接插入排序的升级,属于插入排序类;堆排序相当于简单选择排序的升级,属于选择排序类。算法动态图解我自己做了几张这几种原创 2016-10-09 19:10:51 · 382 阅读 · 0 评论 -
3.23 桶排序
每天都要写点笔记,不然学过的东西都要忘了。package com.sort;/*** * 桶排序 * @author Administrator 2017.3.23 *数组下标范围就是数据范围,元素值与数组的下标相对应 *时间复杂度为O(n+m),n为待排个数,m为桶数,空间复杂度要看数据的规模m, *一般适用于数据分布均匀,数据范围不大的时候,比如哈希映射快速获取,统计个数等 *适当原创 2017-03-23 22:37:50 · 389 阅读 · 0 评论 -
Kolmogorov-Smirnov test in Java : K-S检验正态分布 Java实现
K-S 检验即Kolmogorov-Smirnov Test: The Kolmogorov-Smirnov test (KS-test) tries to determine if two datasets differ significantly. The KS-test has the advantage of making no assumption about the distribu...原创 2018-02-01 10:24:12 · 10716 阅读 · 6 评论