排序
不了痕
风景很美,常回头看看
展开
-
面试官问你:哪几行代码能保证算法稳定性?
遵从百度百科解释,算法稳定性定义如下:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。之前面试前没了解过,胡乱一说算法稳定性就是保证算法计算一次和计算多次结果都是一样的# #,现在想来这种...原创 2020-03-15 20:42:15 · 632 阅读 · 0 评论 -
算法的稳定性
算法稳定性的定义假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。判断方法对于不稳定的排序算法,只要举出一个实例,即可说明它的不稳定性;而对于稳定的排序算法,必须对算法进行分析从而得到稳定的...原创 2020-03-03 21:13:54 · 6744 阅读 · 1 评论 -
【排序知多少】堆排序详解
堆排序的概述堆是具有下列特性的完全二叉树:每个节点的值都大于或等于其左右孩子的节点的值,成为大顶堆,或者每个节点的值都小于或等于其左右孩子节点的值,成为小顶堆。在选择到最小记录同时,并根据比较结果对其他记录做出相应调整。这样的排序整体效率非常高。堆排序的思路堆排序(Heap Sort)就是利用堆进行排序的方法。他的基本思想是,将待排序的序列构造成一个大顶堆,此时,整个序列的最大值就...原创 2020-01-12 17:30:34 · 1777 阅读 · 0 评论 -
【排序知多少】冒泡排序详解
冒泡排序思路1、对元素进行两次遍历2、第一次遍历所有元素3、第二次判断当前元素是否比之后的元素大,如果大则交换位置,否则不动冒泡排序理解冒泡排序是一种常用的排序算法。从思路理解上比插入排序、快排、归并排序都要简单。就是做两次嵌套循环,一旦发现前面的数比后面的数大,就交换位置。像气泡从水里升上来一样,越往上气泡越大。冒泡排序复杂度冒泡排序是对元素做两次嵌套的循环,显而易见...原创 2020-01-09 23:59:06 · 1384 阅读 · 0 评论 -
【排序知多少】归并排序(递归和非递归实现)
归并排序思路1、将待排序元素一分为二2、对于左半边和右半边元素分别再次进行拆分,直到无法再拆3、把拆分过的元素进行重新排序并且合并4、合并之后最终的数组即为排序之后的数组归并排序理解归并排序适用了完全二叉树排序的想法,将带排列数组逐层均分,尽可能分成完全二叉树的形式,再把每组查分的元素从最底层开始,逐层向上的合并起来,直到再次和成一个有序的数组,即完成整个排序过程。归并...原创 2020-01-08 23:02:08 · 1331 阅读 · 0 评论 -
【排序知多少】插入排序详解
插入排序思路1、从待排序元素中的第二个元素开始进行遍历2、记录当前元素作为临时变量3、判断当前元素前的元素是否小于当前元素,小于则不处理,否则把当前元素和前一元素进行互换4、进行遍历,直到当前元素前的所有元素都已经排好序为止插入排序理解插入排序就是从数组的开始两个数进行排序,排好之后再对第三个数进行排序,直到对所有的元素全部进行排序之后,完成排序的逻辑。每次排序的过程,就是要...原创 2020-01-07 23:59:49 · 1294 阅读 · 0 评论 -
【排序知多少】快速排序详解
快速排序思路1、选取基准值,并标明首、尾的标识low、high;2、先从后往前判断,当high的值大于基准值时,high--,否则将low的值替换为high的值;3、然后从前往后判断,当low的值小于基准值时,low++,否则将high的值替换为low的值;4、将基准值赋值给low的值;5、当low<high的时候,递归调用2~4步;快速排序理解每个人理解不同,有...原创 2020-01-06 07:06:15 · 1589 阅读 · 0 评论