经典排序及查找算法
yimi1995
这个作者很懒,什么都没留下…
展开
-
经典排序算法(二)--插入排序、希尔排序(Java实现)
插入排序的思想:首先假设索引为0的元素]被正确排序,然后只需要对索引为1-nums.length-1的元素排序,每次将要插入的元素赋值给变量target,然后判断target与已经排好序的元素相比较,如果target小于排好序的元素,说明target要插入到这个元素的前面,那么将此元素向后移动一位,即nums[j] = nums[j-1],将nums[j-1]赋值给nums[j],这样一直比较直到原创 2017-07-09 16:01:11 · 194 阅读 · 0 评论 -
经典排序算法(一)--冒泡排序、快速排序java实现
冒泡排序(升序)的思想是:每次比较相邻两个元素,如果这两个元素没有按升序排序,即如果第一个元素大于第二个元素,则需要调换两个元素的顺序。经过一轮比较之后,最大的元素排在末尾,这时候只需要再对第0-nums.length-2这些元素进行两两比较即可,一共需要比较nums.length轮,下面的代码用i控制需要比较的轮数,用j表示每一轮需要比较的元素的索引。public static List b原创 2017-07-08 22:19:33 · 244 阅读 · 0 评论 -
二分查找
二分查找的效率比较高,时间复杂度为o(log(n)),它接受一个整数键和一个已经有序的数组作为参数,如果该键存在于数组中就返回它的索引,否则返回-1,用一个while循环判断low与high的大小,当low>high的时候跳出循环,否则用mid作为中间索引去查找key,如果keynums[mid],low变为mid+1,如果key=nums[mid],那么说明找到了key,返回其索引mid,jav原创 2017-07-22 20:22:29 · 204 阅读 · 0 评论 -
快速排序
参考这篇博客和这篇public static int partition(int []array,int lo,int hi){ //固定的切分方式 int key=array[lo]; while(lo<hi){ while(array[hi]>=key&&hi>lo){//从后半部分向前扫...转载 2018-03-06 20:33:54 · 140 阅读 · 0 评论