- 博客(14)
- 资源 (2)
- 收藏
- 关注
原创 js获取请求地址url中参数
getRequestParams:function(){ let url=window.location.href; if(url&&url.lastIndexOf("?")>0){ var start=url.lastIndexOf("?")+1; var paramStr=url.slice(start); var params=paramStr.split("&"); var arr=[]; if(params&¶m.
2021-09-03 14:51:00 220
原创 (九) 桶排序
桶排序思想:将最大值和最小值之间的元素进行瓜分,设定某个桶的容量,然后再定义每个桶的跨度,然后根据元素的大小范围,将他们放入各自的桶中,再对每个桶进行排序,最后输出桶即排序完成 概念解析: 桶容量:数据范围除以个数就是每个里面有多少个了,比如10个糖果,分给5个人,每个人就2个,这个2就是桶的容量 桶的个数:范围除以每个桶的容量,比如10个糖果,每个人分2个,那么需要有5个人分,这个5就是桶的个数bucketNum具体代码实现如下:...
2021-08-12 14:39:44 110
原创 (八)计数排序
计数排序不是基于比较的排序算法,其核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。 作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。算法实现步骤:1、找出待排序的数组arr中最大元素max;创建临时数组int[] tempArr=new int[max+1]存放计数2、统计数组中每个值为i的元素出现的次数,存入临时数组的第arr[i]项:即tempArr[arr[i]]3、对所有的计数累加tempArr[arr[i]]...
2021-08-11 17:41:26 77
原创 (七)堆排序
堆排序的基本思想是:将待排序序列构造成一个大根堆或则小根堆,此时,整个序列的最大值或者最小值就是堆顶的根节点。将其与末尾元素进行交换,此时末尾就为最大值或者最小值。然后将剩余n-1个元素重新构造成一个堆,这样会得到n个元素的次大值或次小值。如此反复执行,便能得到一个有序序列了(升序就选大根堆,降序选小根堆)步骤:1、构造初始堆。将给定无序序列构造成一个大顶堆(升序采用大顶堆,降序采用小顶堆)。 2、将堆顶元素与末尾元素进行交换,使末尾元素最大或者最小。然后继续调整堆,再将堆顶...
2021-08-10 18:10:14 113
原创 (六)希尔排序
希尔排序是Shell在1959年发明的(小时候奶奶经常讲这一年我们老家发大水 闹饥荒呢 哎 缅怀老人家),第一个突破O(n^2)的排序算法,是简单插入排序的改进版。它与插入排序的不同之处在于,它会优先比较距离较远的元素。希尔排序又叫缩小增量排序。 既然希尔排序是插入排序的改进,那我们先回顾一下插入排序的特折:1.如果一个数组大部分元素都有序,那么数组中的元素不需要频繁地进行比较和交换。2.在元素数量较少的情况下,插入排序的工作量较小,插入排序的工作量和n的平方成正比。由此,我们可得出优化..
2021-08-10 16:06:21 75
原创 (三)选择排序
选择排序思想:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾重复第二步,直到所有元素均排序完毕代码实现如下:/** * 选择排序 * @param arr */ public static void selectSort(int[] arr){ // 总共要经过 N-1 轮比较 for (int i = 0; i < arr.l
2021-08-09 17:03:06 42
原创 (二)冒泡排序
冒泡排序思想:类似于水中冒泡,较大的数沉下去,较小的数慢慢冒起来,假设从小到大,即为较大的数慢慢往后排,较小的数慢慢往前排简单理解就是:每一趟遍历,将一个最大的数移到序列末尾代码实现如下:/** * 冒泡排序具体实现 * @param arr */ private static void bubbleSort(int[] arr) { if(arr==null || arr.length < 2 ){ retu
2021-08-09 16:52:48 45
原创 (一)插入排序
插入排序核心思想:从数组的第二个数据开始往前比较,即一开始用第二个数和他前面的一个比较,如果 符合条件(比前面的大或者小,自定义),则让他们交换位置。重复上述步骤,直到完成public class MyClass { public static void main(String[] args){ int[] arr=new int[]{6,35,13,4}; int[] arr2=arr.clone(); int[] arr3=arr.clone
2021-08-09 16:39:16 53
原创 (五)归并排序算法(mergeSort)
归并排序是用分治思想,分治模式在每一层递归上有三个步骤:分解(Divide):将n个元素分成个含n/2个元素的子序列。 解决(Conquer):用合并排序法对两个子序列递归的排序。 合并(Combine):合并两个已排序的子序列已得到排序结果编程的时候采用了自顶向下方式:public class MyClass { public static void main(String[] args){ int[] arr=new int[]{6,35,13,4}; ..
2021-08-09 16:30:39 311
原创 (四)快速排序算法
快速排序算法核心思想是:将小于基准点的元素放到基准点的左边,将大于基准点的元素放到基准点的右边。经过过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,让所有的数据变成有序的(1)首先设定一个分界值,通过该分界值将数组分成左右两部分,一般先选取第一个元素。int low=left;int high=right;int mid=arr[low];(2)从右边的下标寻找比参考值小
2021-08-09 16:17:37 97
原创 webview 源码追踪addJavascriptInterface(android10)
参考https://www.jianshu.com/p/182e4985b669https://www.jianshu.com/p/a8ed39a17f3fwebview.java关键代码private void ensureProviderCreated() { checkThread(); if (mProvider == null) { // As this can get called during the base clas
2021-03-12 18:39:30 1627
原创 android8.0 反射Application 启动过程
private void proxy(){ try{ //获取当前ActivityThread Class ClassActivityThread=Class.forName("android.app.ActivityThread"); Method methodCurrentActivityThread=...
2019-12-11 09:06:25 419
转载 C#中MDI窗体关闭显示代码
Form Room = new Room();//Room为新窗体名称 for(int x=0;x { Form tempChild = (Form)this.MdiChildren[x]; tempChild.Close(); } Room.MdiParent = this; Room.WindowState = FormWindow
2010-05-09 19:03:00 509
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人