【算法】堆,最大堆(大顶堆)及最小堆(小顶堆)的实现
转:http://blog.csdn.net/cdnight/article/details/11650983
此坑待埋。
点击打开漫谈经典排序算法:一、从简单选择排序到堆排序的深度解析链接
白话经典算法系列之七 堆与堆排序
二叉排序树与二叉堆
堆排序(注:这篇文章说明了如何从一个数组构建一个最大堆,推荐看)
最大堆的插入/删除/调整/排序操作(图解+程序)(JAVA)
下面来说一说具体算法。
堆排序解释第一篇(描述不太清楚)
1.堆
堆实际上是一棵完全二叉树,其任何一非叶节点满足性质:
Key[i]<=key[2i+1]&&Key[i]<=key[2i+2]或者Key[i]>=Key[2i+1]&&key>=key[2i+2]
即任何一非叶节点的关键字不大于或者不小于其左右孩子节点的关键字。
堆分为大顶堆和小顶堆,满足Key[i]>=Key[2i+1]&&key>=key[2i+2]称为大顶堆,满足 Key[i]<=key[2i+1]&&Key[i]<=key[2i+2]称为小顶堆。由上述性质可知大顶堆的堆顶的关键字肯定是所有关键字中最大的,小顶堆的堆顶的关键字是所有关键字中最小的。
2.堆排序的思想
利用大顶堆(小顶堆)堆顶记录的是最大关键字(最小关键字)这一特性,使得每次从无序中选择最大记录(最小记录)变得简单。
其基本思想为(大顶堆):
1)将初始待排序关键字序列(R1,R2....Rn)构建成大顶堆,此堆为初始的无序区;
2)将堆顶元素R[1]与最后一个元素R[n]交换,此时得到新的无序区(R1,R2,......Rn-1)和新的有序区(Rn),且满足R[1,2...n-1]<=R[n];
3)由于交换后新的堆顶R[1]可能违反堆的性质,因此需要对当前无序区(R1,R2,......Rn-1)调整为新堆,然后再次将R[1]与无序区最后一个元素交换,得到新的无序区(R1,R2....Rn-2)和新的有序区(Rn-1,Rn)。不断重复此过程直到有序区的元素个数为n-1,则整个排序过程完成。
操作过程如下:
1)初始化堆:将R[1..n]构造为堆;
2)将当前无序区的堆顶元素R[1]同该区间的最后一个记录交换,然后将新的无序区调整为新的堆。
因此对于堆排序,最重要的两个操作就是构造初始堆和调整堆,其实构造初始堆事实上也是调整堆的过程,只不过构造初始堆是对所有的非叶节点都进行调整。
下面举例说明:
给定一个整形数组a[]={16,7,3,20,17,8},对其进行堆排序。
首先根据该数组元素构建一个完全二叉树,得到
然后需要构造初始堆,则从最后一个非叶节点开始调整,调整过程如下:
20和16交换后导致16不满足堆的性质,因此需重新调整
这样就得到了初始堆。
即每次调整都是从父节点、左孩子节点、右孩子节点三者中选择最大者跟父节点进行交换(交换之后可能造成被交换的孩子节点不满足堆的性质,因此每次交换之后要重新对被交换的孩子节点进行调整)。有了初始堆之后就可以进行排序了。
此时3位于堆顶不满堆的性质,则需调整继续调整
这样整个区间便已经有序了。
从上述过程可知,堆排序其实也是一种选择排序,是一种树形选择排序。只不过直接选择排序中,为了从R[1...n]中选择最大记录,需比较n-1次,然后从R[1...n-2]中选择最大记录需比较n-2次。事实上这n-2次比较中有很多已经在前面的n-1次比较中已经做过,而树形选择排序恰好利用树形的特点保存了部分前面的比较结果,因此可以减少比较次数。对于n个关键字序列,最坏情况下每个节点需比较log2(n)次,因此其最坏情况下时间复杂度为nlogn。堆排序为不稳定排序,不适合记录较少的排序。
【ok,从一个原始数组调整成为一个堆,想必已经很清楚了,那么如何从堆里面获取数据变成已经排好序的数组呢?】
下面是一个例子:
0.待排序序列:
A[6]={3,5,8,9,1,2},
1.建堆后(建堆过程参见4.4):
A[6]={9,3,8,5,1,2}
2.9和2交换,然后把9从堆中去掉后:
A[6]={2,3,8,5,1,9}
3.筛选法调整堆A[5]={2,3,8,5,1}后(调整过程参见4.3):
A[6]={8,3,2,5,1,9}
4.堆顶记录与最后一个记录互换,重复第二步,但是堆顶记录和最后一个记录的值变了
【附上另一篇文章---最大堆的插入/删除/调整/排序操作(图解+程序)(JAVA)】
最大堆的插入/删除/调整/排序操作(图解+程序)(JAVA)
堆有最大堆和最小堆之分,最大堆就是每个节点的值都>=其左右孩子(如果有的话)值的完全二叉树。最小堆便是每个节点的值都<=其左右孩子值的完全二叉树。
设有n个元素的序列{k1,k2,...,kn},当且仅当满足下列关系时,称之为堆。
堆的三种基本操作(以下以最大堆为例):
⑴最大堆的插入
由于需要维持完全二叉树的形态,需要先将要插入的结点x放在最底层的最右边,插入后满 足完全二叉树的特点;
然后把x依次向上调整到合适位置满足堆的性质,例如下图中插入80,先将80放在最后,然后两次上浮到合适位置.
时间:O(logn)。 “结点上浮”
程序实现:
[java] view plaincopy
- //向最大堆中插入元素, heap:存放堆元素的数组
- public static void insert(List<Integer> heap, int value) {
- //在数组的尾部添加
- if(heap.size()==0)
- heap.add(0);//数组下标为0的位置不放元素
- heap.add(value);
- //开始上升操作
- // heapUp2(heap, heap.size() - 1);
- heapUp(heap, heap.size() - 1);
- }
- //上升,让插入的数和父节点的数值比较,当大于父节点的时候就和父节点的值相交换
- public static void heapUp(List<Integer> heap, int index) {
- //注意由于数值是从下标为1开始,当index = 1的时候,已经是根节点了
- if (index > 1) {
- //求出父亲的节点
- int parent = index / 2;
- //获取相应位置的数值
- int parentValue = (Integer) heap.get(parent);
- int indexValue = (Integer) heap.get(index);
- //如果父亲节点比index的数值小,就交换二者的数值
- if (parentValue < indexValue) {
- //交换数值
- swap(heap, parent, index);
- //递归调用
- heapUp(heap, parent);
- }
- }
- }
⑵删除
操作原理是:当删除节点的数值时,原来的位置就会出现一个孔,填充这个孔的方法就是,
把最后的叶子的值赋给该孔并下调到合适位置,最后把该叶子删除。
如图中要删除72,先用堆中最后一个元素来35替换72,再将35下沉到合适位置,最后将叶子节点删除。
“结点下沉”
【勘误】
大家看到上面的删除过程是不是觉得很容易明白?
我也如此认为,直到我写程序时候出现了问题才重新审视删除算法的正确性。
譬如说:现在有一个最小堆,如下图:
现在我选中了93,并且要删除它,接下来会发生什么事?
接下来就是这个算法的结果了:
对,当节点没有空间下沉的时候它就会无所事事,结果导致不对了。
这种情况下面我们可以借用插入过程的上浮调整方式,从最下面开始向上调整。
[java] view plaincopy
- 程序:
- /**
- * 删除堆中位置是index处的节点
- * 操作原理是:当删除节点的数值时,原来的位置就会出现一个孔
- * 填充这个孔的方法就是,把最后的叶子的值赋给该孔,最后把该叶子删除
- * @param heap
- */
- public static void delete(List<Integer> heap,int index) {
- //把最后的一个叶子的数值赋值给index位置
- heap.set(index, heap.get(heap.size() - 1));
- //下沉操作
- //heapDown2(heap, index);
- heapDown(heap, index);
- //把最后一个位置的数字删除
- heap.remove(heap.size() - 1);
- }
- /**
- * 递归实现
- * 删除堆中一个数据的时候,根据堆的性质,应该把相应的位置下移,才能保持住堆性质不变
- * @param heap 保持堆元素的数组
- * @param index 被删除的那个节点的位置
- */
- public static void heapDown(List<Integer> heap, int index) {
- //因为第一个位置存储的是空值,不在考虑之内
- int n = heap.size() - 2;
- //记录最大的那个儿子节点的位置
- int child = -1;
- //2*index>n说明该节点没有左右儿子节点了,那么就返回
- if (2 * index > n) {
- return;
- } //如果左右儿子都存在
- else if (2 * index < n) {
- //定义左儿子节点
- child = 2 * index;
- //如果左儿子小于右儿子的数值,取右儿子的下标
- if ((Integer) heap.get(child) < (Integer) heap.get(child + 1)) {
- child++;
- }
- }//如果只有一个儿子(左儿子节点)
- else if (2 * index == n) {
- child = 2 * index;
- }
- if ((Integer) heap.get(child) > (Integer) heap.get(index)) {
- //交换堆中的child,和index位置的值
- swap(heap, child, index);
- //完成交换后递归调用,继续下降
- heapDown(heap, child);
- }
- }
⑶初始化
方法1:插入法:
从空堆开始,依次插入每一个结点,直到所有的结点全部插入到堆为止。
时间:O(n*log(n))
方法2:调整法:
序列对应一个完全二叉树;从最后一个分支结点(n div 2)开始,到根(1)为止,依次对每个分支结点进行调整(下沉),
以便形成以每个分支结点为根的堆,当最后对树根结点进行调整后,整个树就变成了一个堆。
时间:O(n)
对如图的序列,要使其成为堆,我们从最后一个分支结点(10/2),其值为72开始,依次对每个分支节点53,18,36 45进行调整(下沉).
【补充说明】
如何获取相应数组序列?
方法是依次将堆的根节点的小数记下,然后删除根节点,如此反复直到堆为空。上面提到了删除操作,每次删除之后都是要调整堆让堆的性质不变,即根节点必为最大值或最小值,明白了吗?
[java] view plaincopy
- 程序:
- /*根据树的性质建堆,树节点前一半一定是分支节点,即有孩子的,所以我们从这里开始调整出初始堆*/
- public static void adjust(List<Integer> heap){
- for (int i = heap.size() / 2; i > 0; i--)
- adjust(heap,i, heap.size()-1);
- System.out.println("=================================================");
- System.out.println("调整后的初始堆:");
- print(heap);
- }
- /**
- * 调整堆,使其满足堆得定义
- * @param i
- * @param n
- */
- public static void adjust(List<Integer> heap,int i, int n) {
- int child;
- for (; i <= n / 2; ) {
- child = i * 2;
- if(child+1<=n&&heap.get(child)<heap.get(child+1))
- child+=1;/*使child指向值较大的孩子*/
- if(heap.get(i)< heap.get(child)){
- swap(heap,i, child);
- /*交换后,以child为根的子树不一定满足堆定义,所以从child处开始调整*/
- i = child;
- } else break;
- }
- }
(4)最大堆排序
[java] view plaincopy
- //对一个最大堆heap排序
- public static void heapSort(List<Integer> heap) {
- for (int i = heap.size()-1; i > 0; i--) {
- /*把根节点跟最后一个元素交换位置,调整剩下的n-1个节点,即可排好序*/
- swap(heap,1, i);
- adjust(heap,1, i - 1);
- }
- }
(5)完整的代码
[java] view plaincopy
- import java.util.*;
- /**
- *实现的最大堆的插入和删除操作
- * @author Arthur
- */
- public class Heap {
- /**
- * 删除堆中位置是index处的值
- * 操作原理是:当删除节点的数值时,原来的位置就会出现一个孔
- * 填充这个孔的方法就是,把最后的叶子的值赋给该孔,最后把该叶子删除
- * @param heap 一个最大堆
- */
- public static void delete(List<Integer> heap,int index) {
- //把最后的一个叶子的数值赋值给index位置
- heap.set(index, heap.get(heap.size() - 1));
- //下沉操作
- //heapDown2(heap, index);
- heapDown(heap, index); //节点下沉
- //把最后一个位置的数字删除
- heap.remove(heap.size() - 1);
- }
- /**
- * 节点下沉递归实现
- * 删除一个堆中一个数据的时候,根据堆的性质,应该把相应的位置下移,才能保持住堆性质不变
- * @param heap 保持最大堆元素的数组
- * @param index 被删除的那个节点的位置
- */
- public static void heapDown(List<Integer> heap, int index) {
- //因为第一个位置存储的是空值,不在考虑之内
- int n = heap.size() - 2;
- //记录最大的那个儿子节点的位置
- int child = -1;
- //2*index>n说明该节点没有左右儿子节点了,那么就返回
- if (2 * index > n) {
- return;
- } //如果左右儿子都存在
- else if (2 * index < n) {
- //定义左儿子节点
- child = 2 * index;
- //如果左儿子小于右儿子的数值,取右儿子的下标
- if ((Integer) heap.get(child) < (Integer) heap.get(child + 1)) {
- child++;
- }
- }//如果只有一个儿子(左儿子节点)
- else if (2 * index == n) {
- child = 2 * index;
- }
- if ((Integer) heap.get(child) > (Integer) heap.get(index)) {
- //交换堆中的child,和index位置的值
- swap(heap, child, index);
- //完成交换后递归调用,继续下降
- heapDown(heap, child);
- }
- }
- //非递归实现
- public static void heapDown2(List<Integer> heap, int index) {
- int child = 0;//存储左儿子的位置
- int temp = (Integer) heap.get(index);
- int n = heap.size() - 2;
- //如果有儿子的话
- for (; 2 * index <= n; index = child) {
- //获取左儿子的位置
- child = 2 * index;
- //如果只有左儿子
- if (child == n) {
- child = 2 * index;
- } //如果右儿子比左儿子的数值大
- else if ((Integer) heap.get(child) < (Integer) heap.get(child + 1)) {
- child++;
- }
- //如果数值最大的儿子比temp的值大
- if ((Integer) heap.get(child) >temp) {
- //交换堆中的child,和index位置的值
- swap(heap, child, index);
- } else {
- break;
- }
- }
- }
- //打印链表
- public static void print(List<Integer> list) {
- for (int i = 1; i < list.size(); i++) {
- System.out.print(list.get(i) + " ");
- }
- System.out.println();
- }
- //把堆中的a,b位置的值互换
- public static void swap(List<Integer> heap, int a, int b) {
- //临时存储child位置的值
- int temp = (Integer) heap.get(a);
- //把index的值赋给child的位置
- heap.set(a, heap.get(b));
- //把原来的child位置的数值赋值给index位置
- heap.set(b, temp);
- }
- //向最大堆中插入元素
- public static void insert(List<Integer> heap, int value) {
- //在数组的尾部添加要插入的元素
- if(heap.size()==0)
- heap.add(0);//数组下标为0的位置不放元素
- heap.add(value);
- //开始上升操作
- // heapUp2(heap, heap.size() - 1);
- heapUp(heap, heap.size() - 1);
- }
- //节点上浮,让插入的数和父节点的数值比较,当大于父节点的时候就和节点的值相交换
- public static void heapUp(List<Integer> heap, int index) {
- //注意由于数值是从小标为一开始,当index = 1的时候,已经是根节点了
- if (index > 1) {
- //保存父亲的节点
- int parent = index / 2;
- //获取相应位置的数值
- int parentValue = (Integer) heap.get(parent);
- int indexValue = (Integer) heap.get(index);
- //如果父亲节点比index的数值小,就交换二者的数值
- if (parentValue < indexValue) {
- //交换数值
- swap(heap, parent, index);
- //递归调用
- heapUp(heap, parent);
- }
- }
- }
- //非递归实现
- public static void heapUp2(List<Integer> heap, int index) {
- int parent = 0;
- for (; index > 1; index /= 2) {
- //获取index的父节点的下标
- parent = index / 2;
- //获得父节点的值
- int parentValue = (Integer) heap.get(parent);
- //获得index位置的值
- int indexValue = (Integer) heap.get(index);
- //如果小于就交换
- if (parentValue < indexValue) {
- swap(heap, parent, index);
- }
- }
- }
- /*根据树的性质建堆,树节点前一半一定是分支节点,即有孩子的,所以我们从这里开始调整出初始堆*/
- public static void adjust(List<Integer> heap){
- for (int i = heap.size() / 2; i > 0; i--)
- adjust(heap,i, heap.size()-1);
- System.out.println("=================================================");
- System.out.println("调整后的初始堆:");
- print(heap);
- }
- /**
- * 调整堆,使其满足堆得定义
- * @param i
- * @param n
- */
- public static void adjust(List<Integer> heap,int i, int n) {
- int child;
- for (; i <= n / 2; ) {
- child = i * 2;
- if(child+1<=n&&heap.get(child)<heap.get(child+1))
- child+=1;/*使child指向值较大的孩子*/
- if(heap.get(i)< heap.get(child)){
- swap(heap,i, child);
- /*交换后,以child为根的子树不一定满足堆定义,所以从child处开始调整*/
- i = child;
- } else break;
- }
- }
- //对一个最大堆heap排序
- public static void heapSort(List<Integer> heap) {
- for (int i = heap.size()-1; i > 0; i--) {
- /*把根节点跟最后一个元素交换位置,调整剩下的n-1个节点,即可排好序*/
- swap(heap,1, i);
- adjust(heap,1, i - 1);
- }
- }
- public static void main(String args[]) {
- List<Integer> array = new ArrayList<Integer>(Arrays.asList(null,
- 1, 2, 5, 10, 3, 7, 11, 15, 17, 20, 9, 15, 8, 16));
- adjust(array);//调整使array成为最大堆
- delete(array,8);//堆中删除下标是8的元素
- System.out.println("删除后");
- print(array);
- insert(array, 99);//堆中插入
- print(array);
- heapSort(array);//排序
- System.out.println("将堆排序后:");
- print(array);
- System.out.println("-------------------------");
- List<Integer> array1=new ArrayList<Integer>();
- insert(array1,0);
- insert(array1, 1);insert(array1, 2);insert(array1, 5);
- insert(array1, 10);insert(array1, 3);insert(array1, 7);
- insert(array1, 11);insert(array1, 15); insert(array1, 17);
- insert(array1, 20);insert(array1, 9);
- insert(array1, 15);insert(array1, 8);insert(array1, 16);
- print(array1);
- System.out.println("==============================");
- array=new ArrayList<Integer>(Arrays.asList(null,45,36,18,53,72,30,48,93,15,35));
- adjust(array);
- insert(array, 80);//堆中插入
- print(array);
- delete(array,2);//堆中删除80的元素
- print(array);
- delete(array,2);//堆中删除72的元素
- print(array);
- }
- }
程序运行:
D:\java>java Heap
=================================================
调整后的初始堆:
20 17 16 15 9 15 11 1 10 3 2 7 8 5
删除后
20 17 16 15 9 15 11 5 10 3 2 7 8
99 17 20 15 9 15 16 5 10 3 2 7 8 11
将堆排序后:
2 3 5 7 8 9 10 11 15 15 16 17 20 99
-------------------------
20 17 16 10 15 9 15 0 5 2 11 1 7 3 8
==============================
=================================================
调整后的初始堆:
93 72 48 53 45 30 18 36 15 35
93 80 48 53 72 30 18 36 15 35 45
93 72 48 53 45 30 18 36 15 35
93 53 48 36 45 30 18 35 15
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- Android之Qemu和Goldfish
一. Goldfish和qemu介绍 Google在开发Android系统的同时,使用qemu开发了针对每个版本的一个模拟器,这大大降低了开发人员的开发成本,便于Android技术的推广。qemu是一个开源的模拟处理器软件,而Google使用qemu模拟的是ARM926ej-S的Goldfish处理器,如果开发人员在没有目标开…...
2024/4/21 11:33:15 - JavaScript简介
目录1.JavaScript是什么?2.JavaScript和ECMAScript的关系3.JavaScript 和JScript的关系4.JavaScript 和Java的关系5.JavaScript的开发和运行环境参考书籍:《JavaScript 权威指南----ECMAScript5+HTML5DOM+HTML5BOM》编著:张亚飞 1.JavaScript是什么?JavaScript是一种基于对…...
2024/4/21 11:33:14 - 历史上第一位从事游戏开发与设计的女程序员
编者按:一直以来,女性软件开发人员数量稀少,尤其是在早期人们的刻板印象中,她们的工作能力、学历高低很容易其备受质疑的方面。实际上,家庭环境、学校教育、婚姻生活很大程度上影响了女性软件开发工作者的人生道路。对于她们而言,并非所有的人都能被历史所铭记,也并非所…...
2024/5/2 23:50:39 - 奇遇网:秒收录适合优化的cms系统Catfish(鲶鱼)
我研究过很多cms系统,想自己做一个博客网站但是一直纠结样式,收录效果,打开速度的影响,接触Catfish(鲶鱼)已经有两年了,之前做过一个财经博客站点,9个月做到了权3,很开心,Catfish(鲶鱼)是一个极轻的开源博客系统,对于搜索引擎非常友好,一般正常情况下内容达到100条收…...
2024/4/21 11:33:13 - 但是只要是女生的bibohuaianguandan
摘要:bibohuaianguandan 2012年07月19日镜头三,虽说我已不再是当初的豆蔻之年,只能说明你还不够强,PK竞技把职场上尔虞我诈的坏蛋当成游戏里的对手,玩家一人还可操作多角色,建造属于自己的房子用以填补现实生活中老死一生都买不起一套房的苦楚,都有重要职能,bibohuaian…...
2024/4/21 11:33:12 - 编程语言和计算机基础
编程语言编程:就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,最终得到结果的过程。 计算机语言:指人与计算机之间的通讯的语言。 计算机语言分为机器语言,汇编语言、高级语言。 汇编语言只是指令采用英文缩写和指令符,更容易识别和记忆。 高级语言:包括…...
2024/5/2 3:32:47 - openfire BlowFish 加密解密 C#
搜索openfire的 ofuser 密码的解密方式首先用BlowFish方式加密一般得的解决办法都是 Java的 我找了好久是C#的,故而分享下。 BlowFish的加密方式需要传下 keystring keyString = "hello"; Blowfish crypt = new Blowfish(keyString); crypt.DecryptString(enstr);//…...
2024/4/21 11:33:09 - 世界排名前五位的女程序员
提到编程,给人一种令人着迷的感觉,它神秘、充满魅力和金钱,只要你足够努力工作就能获得最好的结果。这是一个由男性主导的领域。我们经常听到顶级程序员的名字,他们都是男性。然而,也有许多女性程序员为自己取得一席之地。Ada Lovelace,这个名字对你来说熟悉吗?Ada Love…...
2024/4/21 11:33:08 - openfire用户加密Blowfish源代码
可能你正在使用openfire.jar里面的Blowfish进行加密,但一个openfire.jar包有7M多,有时候还出现项目可以正常部署,但运行不起来,老是报编译jsp文件出错,没有办法,只好下载openfire源代码,把Blowfish.java这个类代码拷出来,不使用openfire.jar,项目可以正常运行,也不用…...
2024/4/21 11:33:08 - JavaWeb——JavaScript精讲之ECMAScript标准(基本语法、JavaScript对象)
目录1、JavaScript概述2、ECMAScript客户端脚本语言标准2.1、基本语法2.2、JavaScript对象1、JavaScript概述JavaScript不同于HTML、CSS,其是一种客户端脚本语言,运行在客户端浏览器中,每一个浏览器都有JavaScript的解析引擎。其是脚本语言,不需要编译,直接可以被浏览器解…...
2024/4/21 11:33:06 - 关于女生的程序员之路 肖舸老师
这是发到邮箱里面的一封信,感觉近期讨论女性程序员居多,有一定代表性,这里尝试作答。一家之言哈,欢迎拍砖。原文如下:肖老师:您好!我是在大本营上认识的您,首先感谢您在大本营中给予我的帮助和指导,我真的从中获得不少收获。说实话,我之所以加入大本营是因为在大学中课…...
2024/4/21 11:33:05 - 计算机语言的标准与实现是什么?
标准(specification,)是什么? 确切的含义我也不知道,不过我找到了一份ECMAScript语言的标准文档,大概看了一些明白了,标准就是详细规定了一门语言的语法是什么样子的。标准会不断发展以提高生产力,比如ECMAScript最开始的版本并不支持正则表达式,在1999年才把正则表达式加…...
2024/4/21 11:33:04 - ubuntu16.04下编译android-goldfish-3.4内核源码(android6.0.1系统源代码)
配置笔者环境系统: ubuntu 16.04 LTS 硬盘: 固态硬盘笔者刚开始直接克隆的时候出现如下错误:error: RPC failed; curl 56 GnuTLS recv error (-9): A TLS packet with unexpected所以将buffer配置增大 git config --global http.postBuffer 520000000开始克隆这里使用的是国内…...
2024/4/20 16:22:56 - 2019网名最新版的
有时候,某段路,只能你一个人走,孤独难免,但它也能帮你涤清内心的浑浊。孤独,也是无法和躲避的命运历程。因此,别刻意躲避,更别让冷世的尘埃,冰封自己笑容,迟滞了自己的步履。 ̶颓̶废̶少̶女 马云颜粉 北川良子 温柔泛滥. 兜售布丁 爱的卑微. 夏日绵绵冰. 等待日落.…...
2024/4/20 17:02:56 - CyanogenMod 11.0模拟器goldfish的编译方法及下载地址
1、首先下载CM的源码,方法网上有很多,不再赘述。2、android模拟器的产品名为goldfish,cm的产品配置文件和linux内核,利用他脚本breakfast、brunch的方式,在我们天朝经常出错,还是GW的问题。所以如果有问题,可以手动在 .repo/local_manifests/roomservice.xml 中天下如下…...
2024/4/25 10:00:16 - 计算机专业的女生适合干什么工作?
证书、考研、考博都不如能力来得实惠,如果有一技之长还是先就业好。研究生、博士生没有工作背景恐怕也不好找工作!学计算机选择面很宽,以下拙见供参考: *你能熟练使用办公软件,如office,excel等等,会一点编程,你最起码可以做一个办公白领,如果气质好可以当高级秘书之类…...
2024/4/20 17:02:53 - ECMAScript中的Number Type与 IEEE 754-2008
introduction 稍微深入了解一下JavaScript浮点数的开发者都会知道浮点数的误差问题,也就是说IEEE754-2008的浮点数误差。 常见的案例为: 0.1 + 0.2 = 0.30000000000000004 无论是google一下或者baidu一下,这类文章层出不穷,但是很多都是浅尝即止,无法让我能够逻辑通顺的理解…...
2024/4/21 11:33:05 - 最经典的QQ网名
1.我qq上有个哥们叫:大力水脚。这sb另一个号叫:蜡笔小旧。没办法,这样反着来的兄弟现实中也不知道能不能大学毕业。 2.高中有一同学,男,带高度近视瓶底,走路低头,驼背,腼腆指数100,一般和女生说话脸上都掉红油漆那种孩子。现在qq上叫:女澡堂的男搓背工。…...
2024/4/21 11:33:02 - Fishshell 助力前端开发
什么是 Fish shell ? 很多做前端开发的朋友都很钟爱使用Mac电脑,同大多数Linux系统一样Mac自带的命令行是Bash提供的,是一种很基本的Shell。今天我们来了解一款高级的shell工具 -- Fish shell 和Bash相同,Fish shell 也是一种可以在Mac和Linux等系统使用的Shell。 和Bash不…...
2024/4/21 11:33:01 - 阿里闲鱼技术Fish Redux直播回放
昨晚阿里直播了Fish Redux,非常精彩。 有错过的小伙伴可以戳下面看回话: https://alivideolive.taobao.com/h5/liveDetail/ff36146a-b106-48f0-8cff-246fa0b62d50 相关PD下载: 链接:https://pan.baidu.com/s/1Giu9YPC431Mwmcvk3EnmXg 提取码:8esb 顺便给大家推荐个免费的实…...
2024/4/21 11:33:01
最新文章
- C语言——操作符保姆级教学(含整形提升及算数转换)
操作符 一.操作符的分类二.原码、反码、补码三.移位操作符1.左移操作符:<<2.右移操作符:>> 四.位操作符1.按位与—— &2.按位或—— |3.按位异或—— ^4.按位取反—— ~ 五.逗号表达式六.条件操作符七.操作符的属性:优先级、…...
2024/5/3 1:48:26 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - linux系统编程 线程 p1
线程 1.线程的概念2.线程的创建/终止/取消,栈的清理2.1线程创建2.2线程终止2.3 栈的清理 1.线程的概念 线程就是一个正在运行的函数。 posix线程是一套标准,而不是实现。 openmp线程。 线程标识:pthread_t (linux环境下是整形数&…...
2024/5/2 9:54:29 - 大模型重塑电商,淘宝、百度、京东讲出新故事
配图来自Canva可画 随着AI技术日渐成熟,大模型在各个领域的应用也越来越深入,国内互联网行业也随之进入了大模型竞赛的后半场,开始从“百模大战”转向了实际应用。大模型从通用到细分垂直领域的跨越,也让更多行业迎来了新的商机。…...
2024/5/1 14:27:19 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/1 17:30:59 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/2 16:16:39 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/29 2:29:43 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/5/2 9:28:15 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/27 17:58:04 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/27 14:22:49 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/28 1:28:33 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/30 9:43:09 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/27 17:59:30 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/5/2 15:04:34 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/28 1:34:08 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/26 19:03:37 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/29 20:46:55 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/30 22:21:04 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/1 4:32:01 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/4/27 23:24:42 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/28 5:48:52 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/30 9:42:22 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/2 9:07:46 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/30 9:42:49 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57