
排序实现
keep gorgeous
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
折半插入排序java实现
对于一个有序的数组而言,折半查找的性能明显会更优于顺序查找,因此,在array[0]-array[i-1]中按照关键字在有序的序列中确定array[i] 的插入位置时,可利用折半查找实现该位置的确定。该方案与之前的直接插入算法思想一致,仅仅是将确定插入位置的方法由倒序查找变为二分查找而已。处理该方案的主要细节问题是,在执行过程中当high和low指向同一索引值时,移动数据量的规模,二分查找很好...原创 2019-12-22 17:09:04 · 198 阅读 · 0 评论 -
设置岗哨为-1的直接插入排序算法的java代码实现(改进上次的判断条件过多问题)
在上次的代码执行过程中,未设置返回索引为-1,对于三种情况需要逐一进行判断,执行不同的策略,该方案优化上述的缺陷,使之达到一种自适应状态,相对巧妙的解决了冲突域的问题:注意的细节问题在代码中有详细的注释。当设置岗哨为-1,对于 情况2:找到后,j=0,将从lookout+1之后的数据向后移动一位,并array[lookout+1] = temp; 情况3:未找到,j=0,temp是目前最小的数...原创 2019-12-22 10:58:07 · 263 阅读 · 0 评论 -
基于插入排序的算法实现(只是实现自己最初的想法)
这次排序算法的设计思想是从一个数组的1索引开始,进行数组的遍历,并且一直确保正在遍历的索引值之前的数据是有序的,每次遍历一个数据时,将其放置到合适的位置上即可,但是该算法的判断条件过多,会显得比较麻烦,且每次从后往前找到合适的位置时,都要平均将数组的一半大小的数据进行移动,因此,这次代码的实现仅仅是个人想法的实现.外层循环用 i 去遍历整个数组,内层循环用j从后往前判断array[j]与arr...原创 2019-12-22 09:07:40 · 123 阅读 · 0 评论 -
选择排序算法java实现
选择类排序算法的思想:在第i趟的记录中选取关键字第i小的记录作为该有序序列的第i个记录,关键点:如何从剩余的待排序序列中找出最小或者最大的那个记录。对于其稳定性进行分析:出现重复的数据时,若交换是一个位置由前变后,则发生了位置的改变,因此该算法不稳定。代码实现:import java.util.Arrays;public class ChoiceSort { public...原创 2019-12-20 13:13:39 · 149 阅读 · 0 评论 -
设置flag的冒泡排序算法java代码实现
冒泡排序算法,在扫描待排序记录序列时,顺序比较相邻的两个记录的关键字大小,如果是逆序,就交换位置,在传统的冒泡排序算法中,需要将外层循环执行n-1,每一次内层循环执行n-i次判断,在逆序的条件下执行数据的交换,但是若某一趟排序过程结束后,没有发现一个逆序,就可以直接结束整个排序过程,因此设置flag标志。该排序算法的空间复杂度:需要一个辅助空间进行交换,为O(1)稳定性:排序的结果并不会出...原创 2019-12-20 12:37:11 · 707 阅读 · 0 评论 -
快速排序的java代码实现(更改为赋值的方式)
针对上一次代码的改进,以及二者的区别加以描述:1,第一种快排方式是外层循环从右至左的指针r,和从左至右的指针l,指向同一索引值,再进行交换,此刻二者指向索引处的值必定是小于或者等于基准值的,从而在外层循环结束后再次进行值的交换,确保交换后的值使再其左侧都是小于基准值,而右侧都是大于基准值,然后在递归调用该方法,即递推使得排序的规模一直在减少,直至数据规模为1,进行回归;2.第二种快速排序的...原创 2019-12-18 21:31:58 · 319 阅读 · 0 评论 -
快速排序算法代码实现
在算法设计中应注意的几点;1,在快速排序中对于划分好的左右两边需要采用递归算法,直至递归的规模为1,对于左侧的数据,可以是一直以0为基准的,而对于右侧的数据区,它的起始位置是动态变化,因此需要进行索引的备份,已实现对右侧数据的递归排序进行成功实现。这也是起始最难以理解的部分,不清晰为什么需要对left,right,进行赋值给变量i和j。2,注重判断条件,已实现不必要的交换,尽量减少对内存资...原创 2019-12-16 23:46:34 · 491 阅读 · 0 评论