算法
8种内部排序算法以及其他常用算法不断更新中
必看吧
个人博客 https://www.bikan8.cn/
展开
-
八大排序算法总结(详细介绍、稳定性问题、优先使用问题以及掌握程度)
选择排序简单选择排序详解堆排序详解交换排序冒泡排序详解快速排序详解插入排序直接插入排序详解二分插入排序详解希尔排序详解归并排序详解基数排序详解稳定性相关问题:首先要知道所谓稳定性指的是r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前算法名称 稳定性 冒泡排序 ...原创 2019-08-13 19:40:07 · 272 阅读 · 0 评论 -
排序算法-基数排序详细图解以及为什么从低位开始
基数排序:基数排序的原理并不难从低位开始 先对个位进行排序 对个位排完序的数组 在进行十位排序 以此类推 最后就可以得到一个有序数组理解起来很简单但是大多数人会有2个问题1.为什么不从高位开始?首先基数排序是对桶排序的一种扩展用的是10个队列本身就挺消耗空间的如果从高位开始你还要利用递归的思想对每个队列在进行排序在准备10个队列 以此类推直到一个数一个队列为止 这样虽然符合基数排序...原创 2019-08-13 14:01:15 · 3266 阅读 · 0 评论 -
排序算法-归并排序详细图解
归并排序:采用了分治策略 就是将原问题分解为一些规模较小的相似子问题,然后递归解决这些子问题,最后合并其结果作为原问题的解。归并的核心思想 将两个有序的数组合并成一个大的有序的数组,通过递归把待排序数组变成完全有序数组。归并的核心算法就是如何将2个数组合并算法思想:将待排序数组一直往下分解直到不可分解为止也就是一个数为一个子数组然后对这些子数组层层合并(合并里有排序的过程)...原创 2019-08-12 19:31:36 · 7743 阅读 · 0 评论 -
排序算法-交换排序-快速排序详解
快速排序:总的来说就是先找一个基数(一般以low作为基准数) 把比基准数大的放在基准数的右边比基数小的放在左边然后再对其左右进行排序栗子:以数组arr[] = { 2, 3, 8, 7, 1} 为栗子首先要有两个指针 low 和high 以及基准数 在此以arr[low]作为基准数把比它大的放在它右边比它小的数放在它左边 temp 保存一下基准数的值 因为排序过程中它的值会被覆盖...原创 2019-08-10 14:43:32 · 331 阅读 · 0 评论 -
排序算法-选择排序-堆排序(包括建堆过程)详解
堆排序:选择排序的一种以大顶堆为例每次都拿堆顶元素放数组的后边然后再建堆再循环此过程即可堆排序需要你对二叉树以及堆有一定的了解栗子:以数组a[] = { 16,7,3,20,17,8 }; 为栗首先建立一个二叉树然后开始建堆建堆(大顶堆)规则:从最后一个非叶子节点(n-1)/2 开始 (注意理解什么是非叶子节点)分别与左孩子和右孩子比较大小如果最大,则不用调整否...原创 2019-08-09 19:16:27 · 1169 阅读 · 0 评论 -
排序算法-插入排序-希尔排序(分组插入排序)详解
希尔排序:先学会直接插入排序https://blog.csdn.net/qq_43665697/article/details/98651903自定义一个规则对待排序数组进行分组 然后再依次对每组元素进行直接插入排序相对于直接插入排序时间效率高 前期对数组进行分组 每组的数目少排序快 虽然后期每个元素都是一组但真正进行排序的元素没有几个 所以时间效率比 直接插入排序高简单例子:...原创 2019-08-08 13:09:51 · 294 阅读 · 0 评论 -
排序算法-插入排序-二分法插入排序详解
建议先看懂直接插入排序https://blog.csdn.net/qq_43665697/article/details/98651903二分插入排序是在插入排序的基础上利用二分法对算法进行的优化减小比较次数 但是插入流程和直接插入排序是一样的二分法插入排序:(先看懂插入排序)对待插入位置i 的左边元素进行二分查找 也就是 left 设置为0 right 设置为 i+1 然后取中间位...原创 2019-08-07 13:57:28 · 3463 阅读 · 1 评论 -
排序算法-选择排序-简单选择排序入门详解
简单选择排序让当前位置的元素和剩余元素进行比较如果小就交换位置 遍历完剩余元素 当前位置元素肯定就是当前位置最小元素了因为从数组下标为0的位置开始 所以整个过程结束后 肯定是一个从小到大的有序数组了简单例子:以a[] = { 8, 3, 2, 7, 1 }数组a为例以a[0]开始遍历其右边剩余元素 如果比它小就交换位置 3比8小 交换此时为a[] = { 3, ...原创 2019-08-06 08:43:05 · 197 阅读 · 0 评论 -
排序算法-插入排序-直接插入排序详解
直接插入排序:遍历待插入元素之前的元素和待插入元素进行比较1.如果比待插入元素大则右移一位2.如果比待插入元素小则把待插入元素插入在比它小的元素后边3.如果没有比待插入元素小的元素则说明待插入元素最小则放在首位简单例子:以a[] = { 8, 3, 2, 7, 1 }数组a为例首次待插入元素为a[1]=3 (因为要有前边元素和它进行比较所以以第二个元素开始)...原创 2019-08-06 20:03:23 · 460 阅读 · 0 评论 -
排序算法-交换排序-冒泡排序入门详解
冒泡排序(升序)从头开始两两元素进行比较如果大就交换位置这样最大的数肯定在最后边了循环数组长度-1次 一个从小到大的有序数组就出来了简单例子:以a[] = { 8, 3, 2, 7, 1 }数组a为例a[0]和a[1]进行比较 如果a[0]>a[1] 就交换位置 8>3交换此时a[]={ 3, 8, 2, 7, 1 }继续a[1]和a[2]进行比较 如果a[...原创 2019-08-06 18:42:12 · 185 阅读 · 0 评论