随笔分类 -  排序算法

摘要:快速排序 快速排序的基本思想是从数组中取一个值作为轴,然后遍历数组将比该值小或与该值相等的元素移动到数组的左部分,将比该值大的元素移动到数组的右部分,然后对左右部分使用递归进行相同操作,下面通过一个示例演示下快排的操作流程 假定初始数组为:{2,5,7,1,3,4},每次都以数组的末尾元素作为轴 那 阅读全文
posted @ 2020-07-11 19:09 Mango_SF 阅读(182) 评论(0) 推荐(0)
摘要:归并排序 归并排序的思想是将两个有序数组合并成一个新的有序数组的过程,所以要使用归并就必须保证待合并的两个数组本身是有序的。 归并排序的流程 需要一个中间数组,长度为两个待合并数组的长度之和,然后需要三个索引值,分别为左索引指向左数组(待合并数组一)0号索引位置,右索引指向右数组(待合并数组二)0号 阅读全文
posted @ 2020-07-08 16:23 Mango_SF 阅读(186) 评论(0) 推荐(0)
摘要:希尔排序 前面我们说过了插入排序,它是三种基本排序中最常用的一种排序,具有排序稳定,空间复杂度低,而且在样本小且基本有序时效率比较高,该篇讲述的希尔排序是对插入排序的一种优化排序,在希尔排序开始阶段,通过增量的方式使排序的样本小化,在希尔排序的最后阶段蜕变成插入排序,但可以完美实现样本基本有序,从而 阅读全文
posted @ 2020-07-06 18:22 Mango_SF 阅读(192) 评论(0) 推荐(0)
摘要:插入排序 之前的文章讲过选择排序和冒泡排序,他们都有各自的优缺点,比如选择排序不稳定,冒泡排序效率较低等。这次我们来聊一聊简单排序中的最后一种——插入排序,相比于选择排序和冒泡排序,是更为常用的简单排序,在样本小且基本有序的时候效率比较高。 插入排序的基本思想每次从无序数组中取一个值然后插入到有序数 阅读全文
posted @ 2020-07-05 13:08 Mango_SF 阅读(180) 评论(0) 推荐(0)
摘要:冒泡排序 冒泡排序类似于泡泡一样从底层逐次上升到高层的排序过程,每次从数组的第一个元素开始,按(第1个,第2个),(第2个,第3个),(第3个,第4个)...的过程进行比较,每次都取最大的值放置到后面的位置,那么最后得到的值就一定是数组中的最大值,然后将该值排除在外,然后在剩余的数组元素中继续进行上 阅读全文
posted @ 2020-06-30 14:18 Mango_SF 阅读(221) 评论(0) 推荐(0)
摘要:选择排序 选择排序的思想就是从待排数组中将最小的一个元素筛选出来并移动到数组最前端,然后将待排数组的范围缩小(即将已排序的第一个元素排除在外),循环对待排数组进行相同排序处理,直到所有元素都已经排好序 假定初始数组为:{3,5,4,2,1} 第一次排序后得到{1,5,4,2,3} 第二次排序后得到{ 阅读全文
posted @ 2020-06-29 23:29 Mango_SF 阅读(163) 评论(0) 推荐(1)