![](https://img-blog.csdnimg.cn/20190918140213434.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
排序
常见的排序算法
wcl949
这个作者很懒,什么都没留下…
展开
-
排序之归并排序
归并排序还是有点云里雾里(尤其是递归的时候的状态树与函数调用时的栈的状态不太清楚,需要写代码加断点做测试),先记录下来,后面有时间再弄,先查到一个用断点测试后,描述归并排序时递归状态树的博客:https://blog.csdn.net/Cinderella_hou/article/details/51763681,其实如果按照《极客大学》算法训练营的覃超老师讲的分治的模板,应该比较好写出来:分治的模板:int divide_conquer(Problem *problem, int params)原创 2020-09-29 22:41:44 · 83 阅读 · 0 评论 -
排序算法系列——选择排序
选择排序步骤:从未排序数组中选择最小值,并放在有序子数组的末尾; 继续从未排序数组中选择最小值(第二小),放在有序数组的末尾; 重复第二步,直到完成排序具体代码:public static void selectSort(int[] arr) { int length = arr.length; for (int i = 0; i < length - 1; i++) { int min = i; for (int j原创 2020-09-08 17:45:59 · 68 阅读 · 0 评论 -
排序之插入排序
目标:将数组array[n]进行升序排序,我理解的插入排序:1.整体思路:插入排序的对象分为有序子数组和无序子数组,排序的过程就是从无序子数组中不断取元素,与有序子数组中的元素按照从后到前的顺序进行比较,并将当前元素放到合适的位置2.要点:默认数组的第一个元素构成的子数组是有序的(因为1个元素本省必然有序),然后从 j = 1 开始(无序子数组的开始),将无序子数组的头的值存在temp中,在 j >=1的情况下,循环比较temp<array[j-1]?: 如果满足条件则 ar.原创 2020-09-08 17:04:48 · 86 阅读 · 0 评论 -
排序算法系列——冒泡排序
对数组array[n],其数组长度为n,元素索引0~n-1,对其进行升序排序,针对n<=10时,可选择冒泡排序冒泡排序要点:1.冒泡排序有两层循环,外层循环控制排序的轮数 i,内存循环负责将相邻元素进行比较和交换;2.其中外层排序的轮数 i 为[0,length-1)区间,即外层循环比较length-1次,比较简单的理解就是如果数组array={2, 1},那么i从0开始,当i<2-1时,进行第一轮排序,很显然这只需要进行一轮排序即可,;3.内层循环在数组索引 j =0 到 j原创 2020-09-08 11:11:35 · 158 阅读 · 0 评论