算法
ximen502_
TA很懒,但还是添加了简介
展开
-
希尔排序
本文内容来源于数据结构教材(C语言版)希尔排序(Shell’s Sort),又称缩小增量排序(Diminishing Increment Sort),它也是一种属插入排序类的方法,但在时间效率上较前几种插入排序有较大改进。它的基本思想是:先将整个待排序记录序列分割成为若干子序列,分别进行,直接插入排序,待整个序列中的记录基本有序时,再对全体记录进行一次直接插入排序。希尔排序算法使用Java...原创 2019-11-16 16:26:08 · 166 阅读 · 0 评论 -
插入排序
文章内容来源于数据结构教材(C语言版)教材讲解了4种插入排序算法,分别为1、直接插入排序2、折半插入排序3、2-路插入排序4、表插入排序还有一个希尔排序(属于插入排序分类)本文只将1、2,两种算法进行了实践和探索,其中第4个表插入排序是基于链表的。1-3是基于数组的。两种算法Java实现如下 /** * 直接插入排序(Straight Insertion Sort) * ...原创 2019-11-16 14:28:15 · 104 阅读 · 0 评论 -
归并排序
本文内容和代码来源于数据结构教材。归并排序(Merging Sort)是又一类不同的排序方法。"归并"的含义是将2个或2个以上的有序表组合成1个新的有序表。无论是顺序存储还是链表存储结构,都可在O(m+n)的时间量级上实现。归并的基本思想如下:假设初始序列含有n个记录,则可看成是n个有序的子序列,每个子序列的长度为1,然后两两归并,得到⌈n2⌉\lceil \frac{n}{2} \rceil...原创 2019-11-02 23:21:59 · 194 阅读 · 0 评论 -
桶排序
本文内容和代码来源于《漫画算法》。针对计数排序的局限性,桶排序做出了弥补,时间复杂度同样是线性级。类似于技术排序所创建的统计数组,桶排序需要创建若干个桶来协助排序。那么桶排序中所谓的“桶”,又是什么呢?每一个桶(bucket)代表一个区间范围,里面可以承载一个或多个元素。假设有一个非整数数列如下:4.5,0.84,3.25,2.18,0.5让我们来看看桶排序的工作原理。桶排序的第一步...原创 2019-11-01 14:55:45 · 107 阅读 · 0 评论 -
计数排序
之前练习的冒泡排序、鸡尾酒排序、快速排序、堆排序都是基于元素比较和位置元素交换实现的,有一些特殊的排序并不基于元素比较,如计数排序、桶排序、基数排序。以计数排序来说,这种排序算法是利用数组下标来确定元素的正确位置的。来看一个例子:假设有20个随机整数,取值范围0-10,要求用最快的速度把这20个整数从小到大进行排序建立一个长度为11的数组,下标0-10,元素全为0。假设20个数字如下所...原创 2019-11-01 00:21:00 · 212 阅读 · 0 评论 -
堆排序总结
本文内容来源于《漫画算法》和数据结构教材这里提到的堆是一个二叉堆,本质上是一颗完全二叉树。堆排序只需要一个记录大小的辅助空间。1.java实现 /** * 下沉调整 * @param arr 待调整的堆 * @param parentIndex 要下沉的父节点下标 * @param length 堆的有效大小(一般指存储堆的数组长度) */ void downAdjus...原创 2019-10-31 13:59:07 · 224 阅读 · 0 评论 -
快速排序总结
文章内容和代码来自《漫画算法》和数据结构教材。现进行一下代码编写练习。1.双边循环法 /** * 双边循环法,从左右两端分别向中间进行比较和交换数据 递归实现 */ void quickSortV1(int[] arr, int start, int end) { // 递归结束条件 if (start >= end) { return; } // ...原创 2019-10-29 13:03:48 · 182 阅读 · 0 评论 -
冒泡排序总结
本文内容和代码均来自于**《漫画算法》**,小灰和大黄的对话,非常有趣味的一本书。现理论结合实践,做一下测试。private static final int LEN = 20000; // 第一版 void bubbleV1(int[] arr) { for (int i = 0; i < arr.length - 1; i++) { for (int j = 0; j ...原创 2019-10-28 00:00:32 · 327 阅读 · 0 评论 -
排序算法学习
===冒泡排序===JAVA语言实现/** * 学习冒泡排序 * 冒泡排序(Bubble Sort,台湾译为:泡沫排序或气泡排序)是一种简单的排序算法。它重复地走访过要排序的数列, * 一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换, * 也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到原创 2013-03-28 16:07:28 · 644 阅读 · 0 评论 -
程序员应该阅读的书
程序员书http://book.douban.com/doulist/995723/UNIX编程艺术原创 2013-01-11 19:46:29 · 486 阅读 · 0 评论