数据结构与算法:七种排序算法总结(冒泡排序、选择排序、直接插入排序、希尔排序、堆排序、归并排序、快速排序)
最近复习了一些排序算法,在这做一个总结。本文中部分内容参考博客:http://blog.csdn.net/morewindows/article/details/7961256。这个博客中介绍的算法等知识详细易理解,以后可以多参考学习。
总结的排序算法包括:冒泡排序、选择排序、直接插入排序、希尔排序、堆排序、归并排序以及快速排序。下面依次介绍。(本文全部排序算法源代码可下载,下载链接:http://download.csdn.net/detail/dabusideqiang/7180021)
1、冒泡排序
通常在学习编程语言时,都会介绍一种排序算法作为例子,而这个算法一般就是冒泡排序。主要是因为冒泡排序思路简单,容易理解。冒泡排序是一种交换排序,基本思想是:两两比较相邻数据的值,如果反序则交换,直到没有反序的数据为止。
冒泡排序步骤如下:(设数组长度为N,以从小到大为例)。
1.比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个数据交换。
2.这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1个位置。
3.N=N-1,如果N不为0就重复前面二步,否则排序完成。
对应代码如下:
/**
* 冒泡排序初始程序
* @param [in] a:数组名
* @param [in] n:数组大小
* @return
*/
void BubbleSort1(int a[], int n)
{ for (int i = 0; i < n; i++) for (int j = 1; j < n - i; j++) if (a[j - 1] > a[j]) //若顺序不合适则交换数据swap(a[j - 1], a[j]);
}
上述的代码还可以进一步优化,试想一下,如果我们待排序的是{2,1,3,4,5,6,7,8,9,10},也就是说,只有前面两个需要排序,后面已经排好序。这样只需要将2和1交换就完成排序了,上述的代码会从2到10一直循环下去,这样就多余了。为了解决这个问题,我们设置一个标志位:bSwap。在循环时,一轮中只要发生过交换就置bSwap为true,继续下一轮循环。如果一轮中没有发生交换,则置bSwap为false,排序完成。
对应代码如下:
/**
* 冒泡排序改进程序
* @param [in] a:数组名
* @param [in] n:数组大小
* @return
*/
void BubbleSort2(int a[], int n)
{ bool bSwap=true; while (bSwap) //bSwap为false退出循环{ bSwap = false; for (int i = 1; i < n; i++) {if (a[i - 1] > a[i]) { swap(a[i - 1], a[i]); bSwap = true; //有数据交换则置bSwap为true} }n--; }
}
冒泡排序的思想就是不断地交换,通过交换完成最终的排序。选择排序则是找到合适的关键字时再做交换。简单选择排序法就是通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i个记录交换。
选择排序步骤如下:(设数组为a[0…n-1])
1.初始时,数组全为无序区为a[0..n-1]。令i=0
2.在无序区a[i…n-1]中选取一个最小的元素,将其与a[i]交换。交换之后a[0…i]就形成了一个有序区。
3. i++并重复第二步直到i==n-1。排序完成。
对应代码如下:
/**
* 选择排序程序
* @param [in] a:数组名
* @param [in] n:数组大小
* @return
*/
void Selectsort(int a[], int n)
{int i, j, nMinIndex;for (i = 0; i < n; i++){nMinIndex = i; //将当前下标定义为最小值下标for (j = i + 1; j < n; j++){if (a[j] < a[nMinIndex])//如果有小于当前最小值的数据nMinIndex = j;//将此下标赋给 nMinIndex}if(i!=nMinIndex) swap(a[i], a[nMinIndex]); //若找到最小值则交换数据}
}
三、直接插入排序
直接插入排序的基本操作是将一个数据插入到已经排好序的有序表中,从而得到一个新的、数据数增1的有序表。就相当于打牌时理牌的方法,将不合适位置的数据插入到合适的位置排好顺序。
具体步骤如下:(数组为a[0…n-1])
1、初始时,a[0]自成1个有序区,无序区为a[1..n-1]。令i=1
2、将a[i]并入当前的有序区a[0…i-1]中形成a[0…i]的有序区间。
3、i++并重复第二步直到i==n-1。排序完成。
代码如下:
/**
* 直接插入排序程序
* @param [in] a:数组名
* @param [in] n:数组大小
* @return
*/
void InsertSort(int a[], int n)
{ int i,j;for(i=1; i < n; i++){if(a[i] < a[i-1])//a[i]<a[i-1]则需要将a[i]插入有序子表{int temp = a[i];for(j=i-1; j>=0 && a[j] > temp; j--)//将比a[i]大的数据后移a[j+1] = a[j];a[j+1] =temp;//插入到正确位置}}
}
四、希尔排序
优秀排序算法的首要条件就是速度,上述的三种常用排序算法时间复杂度都是O(n2),接下来我们介绍算法时间复杂度为O(nlogn)的几种排序算法。首先介绍希尔排序,希尔排序是D.L.Shell于1959年提出来的,是突破O(n2)时间复杂度的第一批算法之一。
希尔排序其实就相当于对直接插入排序的改进,直接插入排序在数据本身基本有序或数据较少时效率很高。因此就可以对原本数据比较多的待排序序列进行分组,分成若干个子序列,然后分别对这些子序列进行直接插入排序,当整个序列基本有序时,再对整个序列进行一次直接插入排序。
注意:这里说的基本有序的意思是:小的数据基本在前面,大的数据基本在后面,不大不小的基本在中间。像{2,1,3,6,4,7,5,8,9}这样可以称为基本有序,而{1,5,9,3,7,8,2,4,6}这样就不是基本有序。因此如何分组能达到基本有序很重要。这里采取跳跃分割策略:将相距某个“增量”的数据组成一个子序列,然后依次缩减增量,直至为1。这样才能保证在子序列内分别进行直接插入排序后得到的结果基本有序而不是局部有序。
代码如下:
/**
* 希尔排序程序
* @param [in] a:数组名
* @param [in] n:数组大小
* @return
*/
void ShellSort(int a[], int n)
{int i,j;int increment=n;do{increment = increment/3+1;//增量for(i=increment; i < n; i++)//分组进行直接插入排序,{if(a[i] < a[i-increment]){int temp = a[i];for(j=i-increment;j>=0 && a[j] > temp; j-=increment)a[j+increment]=a[j];a[j+increment] = temp;}}}while(increment > 1);//直到增量为1结束
}
注:希尔排序的关键并不是随便分组后各自排序,而是将相隔某个增量的数据组成子序列,实现跳跃式的移动,提高排序效率。在这里增量的选取很关键。目前也没有一个最好的增量序列。但是增量序列的最后一个增量值必须等于1。
五、堆排序
再说堆排序之前,要先介绍堆结构。堆是具有下列性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆(图1);或者每个结点的值小于或等于其左右孩子结点的值,称为小顶堆(图2)。
图1 大顶堆 图2 小顶堆
由堆的性质可知,根结点一定是堆中最大或最小者。并且根据二叉树的性质。若结点为i,则该结点的左右子树为2*i+1和2*i+2;
堆排序就是利用堆进行排序的方法。它的基本思想是,将待排序的序列构造成一个大顶堆。此时,整个序列的最大值就是堆顶的根结点。将它移走(其实就是将其与堆数组的末尾元素交换,此时末尾元素就是最大值),然后将剩余的n-1个序列重新构造成一个堆,这样就会得到n个元素中的次小值。如此反复执行,便能得到一个有序序列了。
排序步骤:
1、将待排序的序列构建成一个大顶堆。
2、逐步将每个最大值的根结点与末尾元素交换,并且再调整其成为大顶堆
/************堆排序******************/
/**
* 堆调整函数
* 将a[s..m]调整成为大顶堆
* @param [in] a:数组名
* @param [in] s:待调整序列的起始位置
* @param [in] n:待调整序列的结束位置
* @return
*/
void HeapAdjust(int a[], int s, int m)
{int temp,j;temp=a[s];for(j=2*s+1;j<=m ;j=2*j+1)//从上向下,从左到右,将每个非叶结点及其子树调整为大顶堆{if(j<m && a[j] < a[j+1])j++; //用j标记左右子树中的较大值if(temp >= a[j]) //若根节点大于左右子树,则跳出break;a[s]=a[j];//若根节点小于左右子树,则跟较大值交换s=j;}a[s]=temp; // 交换数据
}/**
* 堆排序程序
* 排序过程:1、将待排序的序列构建成一个大顶堆。
* 2、逐步将每个最大值的根结点与末尾元素交换,并且再调整其成为大顶堆
* @param [in] a:数组名
* @param [in] n:数组大小
* @return
*/
void HeapSort(int a[], int n)
{int i;for(i=n/2-1; i>=0; i--)//将数组a构建成大顶堆HeapAdjust(a,i,n);for(i=n-1;i>0;i--)//{swap(a[0],a[i]);//将堆顶数据与当前未排序子序列的最后一个数据交换HeapAdjust(a,0,i-1);//将a[0..i-1]调整为大顶堆}
}
六、归并排序
讨论归并排序之前先介绍下如何将两个有序序列合并。基本思想是:依次比较两个序列的数据,将较小的数据取出存放到一个新的序列中。然后去掉取出的数据再依次比较剩下的数据。如果有一个序列为空,则直接将另一个序列依次存放到新序列中即可。
代码如下:
/**
* Merge函数:将有序的两个序列a[first..mid]和a[mid+1..last]
* 合并为一个有序序列temp[first..last]
* @param [in] a:待合并数组
* @param [in] temp:临时数组存放归并结果
* @param [in] first:起始位置
* @param [in] mid:中间位置
* @param [in] last:结束位置
* @return
*/
void Merge(int a[], int temp[],int first, int mid, int last)
{int i=first,j=mid+1;int m=mid,n=last;int k=0;while(i<=m && j<=n){if(a[i] <= a[j])//依次比较两个序列的数,谁小取谁,将a中数据从小到大并入temp中temp[k++] = a[i++];elsetemp[k++] = a[j++];}while(i <= m) //将剩余的a[i..m]并入到temp中temp[k++] = a[i++];while(j <= n) //将剩余的a[j..n]并入到temp中temp[k++] = a[j++];for(i=0;i<k;i++) //最后将合并后数组temp复制给aa[first+i] = temp[i];
}
归并排序就是利用归并的思想实现的排序方法。它的原理是假设初始序列含有n个数据,则可以看成是n个有序的子序列,每个子序列的长度为1,然后两两归并,得到n/2个长度为2或1的有序子序列;再两两归并,。。。,如此重复,直至得到一个长度为n的有序序列为止。
递归实现代码如下:
/*******************归并排序:递归法***********************/
/**
* mergesort函数:将a[first..last]归并排序为temp[first..last]
* @param [in] a:待排序数组
* @param [in] temp:临时数组存放排序结果
* @param [in] first:起始位置
* @param [in] last:结束位置
* @return
*/
void mergesort(int a[],int temp[], int first, int last)
{if(first = last) //递归结束条件:当分组后只有一个数据时,表示有序,递归结束temp[first]=a[first];else{int mid=(first+last)/2;//分组mergesort(a,temp,first,mid);//递归将左边归并为有序mergesort(a,temp,mid+1,last);//递归将右边归并为有序Merge(a,temp,first,mid,last);//合并有序序列}
}/**
* 递归归并排序
* @param [in] a:待排序数组
* @param [in] n:数组大小
* @return
*/
void MergeSort(int a[], int n)
{int *p=new int[n];//新建临时数组if(p==NULL)return;mergesort(a,p,0,n-1);delete[] p;
}
非递归实现:基本思想是用迭代方法,从最小序列长度开始依次将相邻子序列两两归并。实现过程如下图所示(待排序序列为{50,10,90,30,70,40,80,60,20})
对应代码如下:
/***************************归并排序:非递归法****************//**
* mergesort2函数:将a中相邻长度为s的子序列两两归并
* @param [in] a:待排序数组
* @param [in] temp:临时数组存放归并结果
* @param [in] s:子序列长度
* @param [in] n:数组大小
* @return
*/
void mergesort2(int a[], int temp[],int s,int n)
{int i=0;while(i<=n-2*s){Merge(a,temp,i,i+s-1,i+2*s-1);//两两归并i=i+2*s;}if(i<n-s)//归并剩下的最后两个序列(数组可能不会正好被平分)Merge(a,temp,i,i+s-1,n-1);
}/**
* 非递归归并排序
* @param [in] a:待排序数组
* @param [in] n:数组大小
* @return
*/
void MergeSort2(int a[],int n)
{int *p=new int[n];//新建临时数组if(p==NULL)return;int k=1;while(k<n){mergesort2(a,p,k,n);//将a中相邻长度为k的子序列两两归并k=2*k;//子序列长度加倍}delete[] p;
}
快速排序其实就是我们前面介绍的冒泡排序的升级,它们都属于交换排序类,即它也是通过不段比较和移动交换来实现排序,只不过它的实现,增大了数据比较和移动的距离,将数据较大的值从前面直接移动到后面,数据较小的值从后面直接移动到前面,从而减少了总的比较和移动交换次数。
快速排序的基本思想是:通过一趟排序将待排序列分割成独立的两部分,其中一部分序列的数据比另一部分序列的数据小,则可分别对这两部分序列继续进行排序,以达到整个序列有序的目的。
详细解释可参考这篇博客:http://blog.csdn.net/morewindows/article/details/6684558
这里简单较少下方法步骤:
1.先从数列中取出一个数作为基准数。
2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。
3.再对左右区间重复第二步,直到各区间只有一个数。
代码如下:
/*****************快速排序*******************/
/**
* quick_sort函数:对s[l..r]进行排序
* @param [in] s:待排序数组
* @param [in] l:起始位置
* @param [in] n:结束位置
* @return
*/
void quick_sort(int s[], int l, int r)
{if (l < r){//int m=(l+r)/2;//if(s[l]>s[r])// swap(s[l],s[r]);//if(s[m]>s[r])// swap(s[m],s[r]);//if(s[m]>s[l])// swap(s[m],s[l]);int i = l, j = r, x = s[l];while (i < j){while(i < j && s[j] >= x) // 从右向左找第一个小于x的数j--; if(i < j) s[i++] = s[j];while(i < j && s[i] < x) // 从左向右找第一个大于等于x的数i++; if(i < j) s[j--] = s[i];}s[i] = x;quick_sort(s, l, i - 1); // 递归调用 quick_sort(s, i + 1, r);}
}
/**
* 快速排序
* @param [in] a:待排序数组
* @param [in] n:数字大小
* @return
*/
void QuickSort(int a[], int n)
{quick_sort(a,0,n-1);
}
快速排序改进优化:
1、优化基准数的选取
上述中选取第一个数作为基准数,基准数的选取对算法性能有一定的影响。总是固定选取第一个数作为基准数不太合理。下面介绍一种三数取中法:即取三个数据进行排序,将中间数作为基准数,一般取开始、中间、结尾三个数据。
代码如下:
int m=(l+r)/2;
if(s[l]>s[r])swap(s[l],s[r]);
if(s[m]>s[r])swap(s[m],s[r]);
if(s[m]>s[l])swap(s[m],s[l]);
2、优化小数组时的排序方案
在数组非常小的情况下,其实快速排序反而不如直接插入排序好,其原因是快速排序用到了递归操作,在大量数据排序时,这点性能影响可以忽略,但数组很小时则优势不明显。在程序中我们可以增加一个判断,当r-l不大于某个常数时,就可用直接插入排序,这样就能保证最大化利用两种排序的优势来完成排序。
3、优化递归操作
递归对性能有一定的影响,快速排序中尾部有两次递归操作。每次递归操作都会耗费一定的栈空间,如果能减少递归,将会提高性能。我们考虑到第一次递归quick_sort1(s,l, i - 1)后,变量l就没有用了,所以将i+1赋给l,将原来的if (l < r)改为while(l< r),当quick_sort1(s, l, i - 1)语句执行完后,l变成i+1,r还是r,再进行循环相当于执行quick_sort1(s, i+1, r)。这样结果相同,但采用迭代代替递归可以缩减堆栈深度,提高整体性能。
上述2、3两点对应的代码如下:
/*****************快速排序改进程序*******************/
/**
* quick_sort1函数:对s[l..r]进行排序
* @param [in] s:待排序数组
* @param [in] l:起始位置
* @param [in] n:结束位置
* @return
*/
const int MAXSIZE=7;
void quick_sort1(int s[], int l, int r)
{if((r-l) > MAXSIZE){while (l < r){int m=(l+r)/2;if(s[l]>s[r])swap(s[l],s[r]);if(s[m]>s[r])swap(s[m],s[r]);if(s[m]>s[l])swap(s[m],s[l]);int i = l, j = r, x = s[l];while (i < j){while(i < j && s[j] >= x) // 从右向左找第一个小于x的数j--; if(i < j) s[i++] = s[j];while(i < j && s[i] < x) // 从左向右找第一个大于等于x的数i++; if(i < j) s[j--] = s[i];}s[i] = x;quick_sort1(s, l, i - 1); // 递归调用 //quick_sort(s, i + 1, r);l=i+1;}}elseInsertSort(s,r-l+1);
}/**
* 快速排序改进程序
* @param [in] a:待排序数组
* @param [in] n:数字大小
* @return
*/
void QuickSort1(int a[], int n)
{quick_sort1(a,0,n-1);
}
总结:本文主要介绍几种常用的排序算法,可以分为四类:插入排序类(直接插入排序、希尔排序),选择排序类(简单选择排序、堆排序),交换排序类(冒泡排序,快速排序),归并排序类(归并排序)。最后给出7种算法的各种指标对比图。对比图来自<<大话数据结构>>。
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- Java定义Logger为什么要用static和final?
private static final Logger logger LoggerFactory.getLogger(ShiroConfig.class); (1)出于资源利用的考虑,Logger的构造方法参数是Class,决定了Logger是根据类的结构来进行区分日志,所以一个类只要一个Logger就可以了,故static…...
2024/4/26 11:50:45 - 对于数字的排序(数组形式)
1.冒泡排序:比如对十个数字进行排序,将相邻的两个数进行比较,如果第一个数大于第二个数,将两值对换,最后把最大的一位放在最后一位,然后再将剩余的九个数在进行相同的对换。 所以n个数需要n-1趟比较…...
2024/4/24 16:00:40 - 14_工程重构
工程里不同模块之间的重复代码提取到一个common里 建立一个新的模块 改pom 因为这个模块是不对外暴露服务的,就没有application.yml文件和主启动类了 然后 最后在需要引入的模块里引入依赖 注意:热部署在更改代码是有效的,但是更新依赖后是需…...
2024/4/20 18:08:11 - STM32CubeMX完成USART串口通信
STM32CubeMX完成USART串口通信 目录 一、串口协议 二、STM32CubeMX安装 三、STM32的USART串口通信程序 四、观察波形 五、总结 一、串口协议 1、USART介绍 嵌入式开发中,UART串口通信协议是我们常用的通信协议(UART、I2C、SPI等)之一&…...
2024/4/19 17:24:10 - MS COCO数据集下载与查看
1. MS COCO数据集简介 官网地址:https://cocodataset.org/ 简介:MS COCO是一个非常大型且常用的数据集,其中包括了目标检测,分割,图像描述等。 2. MS COCO数据集下载 以下载coco2017数据集为例,只需要下…...
2024/4/23 14:59:26 - JavaScript的基本概述
JavaScript概述 网页中 各技术的作用 技术 作用 HTML 创建网页结构 css 美化网页 JavaScript 用于网页交互,让网页变得更加生动,提高用户的体验 js初次体验 需求: 使用js 1.JavaScript的两种引入方式: 1.使用<JavaS…...
2024/4/25 13:35:08 - 目标检测基础-FPN结构
Feature Pyramid Networks for Object Detection (a)是特征图像金字塔结构,针对不同尺度的目标的时候,将图片缩放到不同的尺度。针对每个不同的尺度的图片依次通过算法进行预测。缺点是效率低,根据不同尺度目标的数量…...
2024/4/19 21:25:52 - 9.代理模式
引入 在阎宏博士的《JAVA与模式》一书中开头是这样描述代理(Proxy)模式的: 代理模式是对象的结构模式。代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。 在我们实际生活中代理情况无处不在!…...
2024/4/16 22:45:22 - 2021-11-03 new和malloc的区别
1、new是操作符,可以被重载,malloc()是库函数。 C不可以被重载的运算符,一共有五个,分别是 (1).点运算符、 (2)::命名空间运算符 (3)?:条件运算符 ÿ…...
2024/4/19 11:19:30 - 《金九银十》“不务正业”的程序员靠这份面试总结,秒杀了面试官
很多人换工作都会追求更大更成熟的公司,其实如果选择发展速度更快、上升空间更大的公司会更好。 如果公司在高速发展期,这个时候机遇会特别多。因为业务要发展,自然就会出现更多的管理岗或者专家岗。更重要的是,在高速发展的公司…...
2024/4/15 7:27:47 - thinkphp6读取不到session
新建的项目。出现此情况。于是搜了一下。 解决方法如下: 找到项目路径 : app\middleware.php 将默认的session初始化开启即可 // Session初始化 \think\middleware\SessionInit::class 如果还是不行: 官方的答复是:session…...
2024/4/25 4:15:45 - JAVA学习,异常
比如说栈溢出。堆溢出,出现这种情况只能去改代码。 异常的顶级父类 运行时异常。 除了这个就是编译的异常。 只能parint只能把双引号里的拆掉。定义成abc,就会异常。 如果在输入端输入字符串,就会出现输入不匹配异常。 算数异常,分…...
2024/4/24 16:08:38 - OpenGL 学习串联之一:光栅图形系统结构
目录 前言 Part.01 带显示处理器的光栅图形系统结构 视频控制器 监视器 Part.02 渲染管线总概 OpenGL Wiki 渲染管线 概括下 Part.03 CPU应用阶段 数据加载 状态设置 Part.04 GPU几何阶段 顶点处理 顶点后置加工阶段 Part.05 GPU光栅化阶段 光栅化 Early-Z与片…...
2024/4/17 8:13:10 - NLP--8, 文本相似性度量
说到文本相似度和文本距离,他们其实是亲兄弟,是一体两面的关系: 相似度侧重于文本之间的相似性,距离侧重文本之间的差异性。将相似度或者距离的度量指标压缩到[0,1]这个区间,则有这样的关系:相似度 1 -距离…...
2024/4/20 23:32:40 - Github上瞬间突破98K星标的性能优化方案优解到底有什么魅力
什么是性能调优? 简而言之,就是在不影响系统运行正确性的前提下,使之运行地更快,完成特定功能所需的时间更短。 作为一个程序员,性能优化是常有的事情,不管是桌面应用还是web应用还是后端,不管…...
2024/4/19 19:06:19 - Vue2.x 源码 - 初始化:stateMixin(Vue)、eventsMixin(Vue)、lifecycleMixin(Vue)、renderMixin(Vue)
上一篇:Vue2.x 源码 - 初始化:initMixin(Vue) 这一篇主要看一下 stateMixin、eventsMixin、lifecycleMixin、renderMixin 这四个混入。 文章目录一、stateMixin(Vue)二、eventsMixin(Vue)三、lifecycleMixin(Vue)四、renderMixin(Vue)这些主要是往 Vue 实…...
2024/4/15 7:28:42 - 命题逻辑推理
命题逻辑推理 (1)实现命题逻辑的语法检查功能:合式公式的判定 (2)判断命题公式是否可满足; (3)判断命题公式的蕴含关系是否成立。 参考链接:C语言中缀表达式转后缀表达式…...
2024/4/16 7:42:30 - mysql的密码管理和操作
mysql密码修改 mysql从5.7的版本开始,在你配置完data这个文件后会生成一个随机密码,第一次用这个随机密码登录进去后你执行的任何命令都没用,必须进行一次密码的修改 先使用mysql -uroot -p (“密码”)登录进去 方法一:在输入se…...
2024/4/22 13:04:47 - Clustering provider in Orleans
Clustering provider in Orleans (Jin Qing’s Column, Nov. 3, 2021) When deployed to a cluster of nodes, Orleans internally implements a protocol to manage it’s silos, including discovery, failure and reconfigure, which is called cluster membership manage…...
2024/4/19 19:49:49 - Java实现 对ip白名单的限制
有些项目的接口是需要权限访问,比如限制IP、做权限控制,等等方案,本文是限制ip权限设置访问策略。 先看测试效果: 测试: 注意访问需要输入:http://127.0.0.1:8981/ 在配置文件加上本地的ip 10.9.160.13…...
2024/4/24 23:55:34
最新文章
- 多模光纤标准:OM1、OM2、OM3、OM4和OM5
【摘要】 在当今信息时代,光纤通信作为一种高速、高带宽的数据传输方式,已经成为现代通信网络的重要基石。而在光纤通信系统中,多模光纤因其适用于短距离传输和相对低成本而备受青睐。本文瑞哥将带大家好好了解多模光纤中的不同标准ÿ…...
2024/4/26 12:47:26 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - 权限提升-Linux系统权限提升篇VulnhubRbash绕过DockerLXD容器History泄漏shell交互
知识点 1、普通用户到Linux-泄漏-History 2、普通用户到Linux-限制-Rbash绕过 3、普通用户到Linux-容器-LXD&Docker 4.Linux系统提权-web/普通用户-docker逃逸&提权&shell交互 章节点: 1、Web权限提升及转移 2、系统权限提升及转移 3、宿主权限提升及…...
2024/4/26 12:45:26 - 学习鸿蒙基础(11)
目录 一、Navigation容器 二、web组件 三、video视频组件 四、动画 1、属性动画 .animation() 2、 转场动画 transition() 配合animateTo() 3、页面间转场动画 一、Navigation容器 Navigation组件一般作为页面的根容器,包括单页面、分栏和自适应三种显示模式…...
2024/4/22 1:36:17 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/4/25 11:51:20 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/4/25 18:39:24 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/25 18:38:39 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/4/25 18:39:23 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/25 18:39:22 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/25 18:39:22 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/25 18:39:20 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/25 16:48:44 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/25 13:39:44 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/4/25 18:39:16 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/25 18:39:16 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/25 0:00:17 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/25 4:19:21 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/25 18:39:14 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/4/25 18:39:12 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/4/25 2:10:52 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/25 18:39:00 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/25 13:19:01 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/4/25 18:38:58 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/25 18:38:57 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下: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