
算法
panghaomingme
这个作者很懒,什么都没留下…
展开
-
查找算法——二分查找(边界问题)
链接:https://www.zhihu.com/question/36132386/answer/712269942原创 2021-08-19 10:54:20 · 341 阅读 · 0 评论 -
排序算法———1.9堆排序
堆排序 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。堆 堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。堆排序的基本思想是:将待排序序列构造成一个大顶堆,此时,整个序列的最大值就是堆顶的根节点。将其与末尾元素进行交换,此时末尾就为最大值。然后将剩余n-1个元素重新构造成一个堆原创 2021-05-11 17:47:28 · 224 阅读 · 0 评论 -
排序算法———1.8归并排序
public class MergeSort { public static void main(String[] args) { int array[] = { 5, 2, 9, 4, 6, 1 }; out(array); int low, high; low = 0; high = array.length - 1; mergeSort(array, low, high); out(array); } private static void mergeSort(i.原创 2021-05-11 14:41:10 · 144 阅读 · 0 评论 -
排序算法———1.7直接选择排序
直接选择排序(Straight Select Sorting) 也是一种简单的排序方法,它的基本思想是:第一次从R[0]~R[n-1]中选取最小值,与R[0]交换,第二次从R[1]~R[n-1]中选取最小值,与R[1]交换,....,第i次从R[i-1]~R[n-1]中选取最小值,与R[i-1]交换,.....,第n-1次从R[n-2]~R[n-1]中选取最小值,与R[n-2]交换,总共通过n-1...原创 2016-09-06 12:50:39 · 266 阅读 · 0 评论 -
排序算法———1.1直接插入排序
直接插入排序是由两层嵌套循环组成的。外层循环标识并决定待比较的数值。内层循环为待比较数值确定其最终位置。直接插入排序是将待比较的数值与它的前一个数值进行比较,所以外层循环是从第二个数值开始的。当前一数值比待比较数值大的情况下继续循环比较,直到找到比待比较数值小的并将待比较数值置入其后一位置,结束该次循环。插入排序的基本方法是:每步将一个待排序的记录按其关键字的大小插到前面已经排序的序列中的适当...原创 2016-08-22 20:28:11 · 408 阅读 · 0 评论 -
算法排序———1.5希尔排序
package algorithm;public class ShellSortDemo01 {public static void main(String[] args) {int a[]={8,5,6,4,1,7};shellSort(a);shellSort1(a);}private static void out(int[] array) {for (int i = 0; ...原创 2016-08-26 14:01:28 · 472 阅读 · 0 评论 -
排序算法———1.2直接插入排序二
package algorithm;public class InsertSortDemo01 { public static void main(String[] args) { int a[]={7,9,3,6,1};// insert(a);// out(a); insert1(a, 2); out(a); } public static voi...原创 2016-08-26 13:33:37 · 431 阅读 · 0 评论 -
排序算法———1.3折半插入排序
package insert;public class BInsertSort { public static void main(String[] args) { int[] a = new int[]{9,7,2,6,8}; insert(a); } public static void insert(int[] array) { int low,high,m,tem...原创 2016-08-23 13:53:46 · 463 阅读 · 0 评论 -
排序算法———1.4冒泡排序
冒泡排序是排序中最经典,也是最简单的排序之一原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换,这样一趟过去后,最大或最小的数字被交换到了最后一位,然后再从头开始进行两两比较交换,直到倒数第二位时结束,其余类似看例子冒泡排序每一趟都可以确定一个数的最终位置,假如n个数进行排序,只需要确定n-1个数就可以,也就是进行n-1趟排序。例子为从小到大排序,原...原创 2016-09-01 11:26:34 · 256 阅读 · 0 评论 -
排序算法———1.6快速排序
快速排序和归并排序都使用分治法来设计算法,区别在于归并排序把数组分为两个基本等长的子数组,分别排好序之后还要进行归并(Merge)操作,而快速排序拆分子数组的时候显得更有艺术,取一个基准元素,拆分之后基准元素左边的元素都比基准元素小,右边的元素都不小于基准元素,这样只需要分别对两个子数组排序即可,不再像归并排序一样需要归并操作。基准元素的选取对算法的效率影响很大,最好的情况是两个子数组大小基本相当...原创 2016-09-02 09:59:09 · 293 阅读 · 0 评论