
数据结构和算法
秋楓_Lance
这个作者很懒,什么都没留下…
展开
-
推荐2个数据结构和算法网址-演示常见数据结构算法
Data Structure Visualizations 网址:https://www.cs.usfca.edu/~galles/visualization/Algorithms.html 页面 演示效果原创 2020-04-25 14:32:49 · 269 阅读 · 0 评论 -
十大排序算法-快速排序
快速排序(Quick Sort) 原理:从数列中挑出一个元素,称为 “基准”(pivot)。重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作; 递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序; 逻辑代码 public ...原创 2020-02-04 16:41:44 · 185 阅读 · 0 评论 -
十大排序算法-归并排序
归并排序(Merge Sort) 原理:采用递归思想,分而治之。将数组从中间分割成两部分数组进行排序,其中左半部分和右半部分又递归式进行分割排序,直到分割后的数组只剩两个元素,再逐级向上返回排序好的结果。 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列...原创 2020-01-20 15:33:23 · 224 阅读 · 0 评论 -
十大排序算法-插入排序
插入排序(Insertion Sort) 原理:就好比我们打扑克排的抓牌阶段,我们一般拿到一张新的排会与前面的牌进行比较,然后放到合适的位置,即每次抓到牌后默认前面的牌已经全部排好序。 将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。 逻辑代码 public class Inserti...原创 2020-01-20 08:58:57 · 127 阅读 · 0 评论 -
程序员内功-十大排序算法
总结 排序算法 时间复杂度(平均) 时间复杂度(最好) 时间复杂度(最坏) 空间复杂度 稳定性 选择排序 O(n²) O(n²) O(n) O(1) 不稳定 插入排序 O(n²) O(n²) O(n) O(1) 稳定 冒泡排序 O(n²) O(n²) O(n) O(1) 稳定 快速排序 单元格 单元格 单元格 单元格 单元格 堆排序 单元格 单元格 单元格 单元格 ...原创 2020-01-18 16:05:20 · 420 阅读 · 0 评论 -
十大排序算法-冒泡排序
冒泡排序(Selection Sort) 原理:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。 工具类 public class Utils { //打印数组 static void printArr(int[] arrs) { ...原创 2020-01-18 15:45:40 · 185 阅读 · 0 评论 -
十大排序算法-选择排序
1.工具类 public class Utils { //打印数组 static void printArr(int[] arrs) { for (int x : arrs) { System.out.print(x + " "); } } //用于交换数组两个下标的位置 static void sw...原创 2020-01-18 09:52:56 · 237 阅读 · 1 评论