数据结构与算法
元勇温
这个作者很懒,什么都没留下…
展开
-
插入排序
算法介绍 仅用于排序小列表,如果需要排序的列表几乎已经排序,则插入排序比冒泡排序更有效率。 算法实现 如果需要通过插入排序算法来排序一个列表, 那么: 需要将列表分为两个子列表:排序列表和未排序列表。 最初排序列表中有第一个元素,而未排序列表中包含所有剩余的元素。 循环为排序列表,将第一元素放到循环列表中的正确位置。 代码 public class InsertSort { pr...原创 2019-09-16 14:11:35 · 72 阅读 · 0 评论 -
冒泡排序
public class BubbleSort { private static int[] arr = {5,2,6,7,3}; /** * 从小到大排序 * @param arr 需要排序的数组 */ private static void sort(int[] arr) { int n = arr.length; // 待循环数组长度 // 循环数组 for (int i = 0; i <原创 2019-09-16 09:49:54 · 95 阅读 · 0 评论 -
选择排序
算法介绍 选择排序具有二次方程增长阶,一次仅适用于排序小的列表。 选择排序通过列表反复扫描,每次扫描选择一项,然后将这一项移动到列表中正确的位置。 与冒泡排序不一样的地方,冒泡排序是每次比较相邻的两个元素。而选择排序是考虑列表中未经排序的部分,每次都选出一个最小值或者最大值,然后将这个值放到这部分的最前面。 实现思路 循环数组,假设第i个元素就是最小的元素。 循环剩下的元素(即从i+1开始循环)...原创 2019-09-16 16:30:36 · 107 阅读 · 0 评论 -
高级排序--桶排序
关于桶排序 桶排序是稳定的; 桶排序是常见排序算法中最快的一种,大多数情况下比快速排序和归并排序还要快; 桶排序非常快但是也非常消耗空间,典型的以空间换时间,基本上是最耗内存的排序算法。 实现思路 首先,桶排序中对于无序数组有个要求:成员隶属于固定(有限)的区间,如范围为0~10 例如:待排数组[6, 2, 4, 1, 5, 9] 准备10个空桶: 顺序从待排数组中取出数字,首先6被取出...原创 2019-09-17 11:22:28 · 204 阅读 · 0 评论 -
桶排序--解决待排序数组中有0或者重复元素
关于桶排序的基本实现,可以参考:https://blog.csdn.net/weixin_45051996/article/details/100917360 这里就直接上代码了: public class BucketSort { /** * 桶排序 * 这里仍然有一个问题,就是桶排序只能实现正整数的排序 * * @param arr 待排序数...原创 2019-09-17 12:06:36 · 1409 阅读 · 0 评论 -
高级排序--归并排序
归并排序的基本原理 归并排序算法是将两个(或两个以上)有序表合并成一个新的有序表。 实现思路 假设有有序数组a:[ 38,69,70,71 ], 和有序数组b:[ 11,17,28 ], 要使用归并排序来实现a和b的排序: 定义一个临时的数组temp,用于存放排序后的元素。其长度为a和b的长度总和。 比较a[ 0 ]与b[ 0 ]的大小,将小的值放到temp[ 0 ],大的值继续参与下次比较。...原创 2019-09-17 15:50:24 · 162 阅读 · 0 评论