排序算法分类

这里写图片描述

 

 

 

排序算法比较表格填空

 


排序算法比较表格

1 归并排序可以通过手摇算法将空间复杂度降到O(1),但是时间复杂度会提高。注:

2 基数排序时间复杂度为O(N*M),其中N为数据个数,M为数据位数。

辅助记忆

  • 时间复杂度记忆- 
    • 冒泡、选择、直接 排序需要两个for循环,每次只关注一个元素,平均时间复杂度为O(n2)O(n2)(一遍找元素O(n)O(n),一遍找位置O(n)O(n))
    • 快速、归并、希尔、堆基于二分思想,log以2为底,平均时间复杂度为O(nlogn)O(nlogn)(一遍找元素O(n)O(n),一遍找位置O(logn)O(logn))
  • 稳定性记忆-“快希选堆”(快牺牲稳定性) 
    • 排序算法的稳定性:排序前后相同元素的相对位置不变,则称排序算法是稳定的;否则排序算法是不稳定的。

原理理解

1 冒泡排序

1.1 过程

冒泡排序从小到大排序:一开始交换的区间为0~N-1,将第1个数和第2个数进行比较,前面大于后面,交换两个数,否则不交换。再比较第2个数和第三个数,前面大于后面,交换两个数否则不交换。依次进行,最大的数会放在数组最后的位置。然后将范围变为0~N-2,数组第二大的数会放在数组倒数第二的位置。依次进行整个交换过程,最后范围只剩一个数时数组即为有序。

1.2 动图

1.3 核心代码(函数)

//array[]为待排序数组,n为数组长度
void BubbleSort(int array[], int n)
{int i, j, k;for(i=0; i<n-1; i++)for(j=0; j<n-1-i; j++){if(array[j]>array[j+1]){k=array[j];array[j]=array[j+1];array[j+1]=k;}}
}

2 选择排序

2.1 过程

选择排序从小到大排序:一开始从0~n-1区间上选择一个最小值,将其放在位置0上,然后在1~n-1范围上选取最小值放在位置1上。重复过程直到剩下最后一个元素,数组即为有序。

2.2 动图

 

2.3 核心代码(函数)

//array[]为待排序数组,n为数组长度
void selectSort(int array[], int n)
{int i, j ,min ,k;for( i=0; i<n-1; i++){min=i; //每趟排序最小值先等于第一个数,遍历剩下的数for( j=i+1; j<n; j++) //从i下一个数开始检查{if(array[min]>array[j]){min=j;}}if(min!=i){k=array[min];array[min]=array[i];array[i]=k;}}
}

3 插入排序

3.1 过程

插入排序从小到大排序:首先位置1上的数和位置0上的数进行比较,如果位置1上的数大于位置0上的数,将位置0上的数向后移一位,将1插入到0位置,否则不处理。位置k上的数和之前的数依次进行比较,如果位置K上的数更大,将之前的数向后移位,最后将位置k上的数插入不满足条件点,反之不处理。

3.2 动图

3.3 核心代码(函数)

//array[]为待排序数组,n为数组长度
void insertSort(int array[], int n)
{int i,j,temp;for( i=1;i<n;i++){if(array[i]<array[i-1]){temp=array[i];for( j=i;array[j-1]>temp;j--){array[j]=array[j-1];}array[j]=temp;}}
}

4 归并排序

4.1 过程

归并排序从小到大排序:首先让数组中的每一个数单独成为长度为1的区间,然后两两一组有序合并,得到长度为2的有序区间,依次进行,直到合成整个区间。

4.2 动图

 、

 

4.3 核心代码(函数)

  • 递归实现
////实现归并,并把数据都放在list1里面 
void merging(int *list1, int list1_size, int *list2,  int list2_size)
{int i=0, j=0, k=0, m=0;int temp[MAXSIZE];while(i < list1_size && j < list2_size){if(list1[i]<list2[j]){temp[k++] = list1[i++];}else{temp[k++] = list2[j++];}}while(i<list1_size){temp[k++] = list1[i++];}while(j<list2_size){temp[k++] = list2[j++];}for(m=0; m < (list1_size+list2_size); m++){list1[m]=temp[m];}
}
//如果有剩下的,那么说明就是它是比前面的数组都大的,直接加入就可以了 
void mergeSort(int array[], int n)
{if(n>1){int *list1 = array;int list1_size = n/2;int *list2 = array + n/2;int list2_size = n-list1_size;mergeSort(list1, list1_size);mergeSort(list2, list2_size);merging(list1, list1_size, list2, list2_size);}
}
//归并排序复杂度分析:一趟归并需要将待排序列中的所有记录  
//扫描一遍,因此耗费时间为O(n),而由完全二叉树的深度可知,  
//整个归并排序需要进行[log2n],因此,总的时间复杂度为  
//O(nlogn),而且这是归并排序算法中平均的时间性能  
//空间复杂度:由于归并过程中需要与原始记录序列同样数量级的  
//存储空间去存放归并结果及递归深度为log2N的栈空间,因此空间  
//复杂度为O(n+logN)  
//也就是说,归并排序是一种比较占内存,但却效率高且稳定的算法 
  • 迭代实现
void MergeSort(int k[],int n)  
{  int i,next,left_min,left_max,right_min,right_max;  //动态申请一个与原来数组一样大小的空间用来存储int *temp = (int *)malloc(n * sizeof(int));  //逐级上升,第一次比较2个,第二次比较4个,第三次比较8个。。。  for(i=1; i<n; i*=2)  {  //每次都从0开始,数组的头元素开始  for(left_min=0; left_min<n-i; left_min = right_max)  {  right_min = left_max = left_min + i;  right_max = left_max + i;  //右边的下标最大值只能为n  if(right_max>n)  {  right_max = n;  }  //next是用来标志temp数组下标的,由于每次数据都有返回到K,  //故每次开始得重新置零  next = 0;  //如果左边的数据还没达到分割线且右边的数组没到达分割线,开始循环  while(left_min<left_max&&right_min<right_max)  {  if(k[left_min] < k[right_min])  {  temp[next++] = k[left_min++];  }  else  {  temp[next++] = k[right_min++];  }  }  //上面循环结束的条件有两个,如果是左边的游标尚未到达,那么需要把  //数组接回去,可能会有疑问,那如果右边的没到达呢,其实模拟一下就可以  //知道,如果右边没到达,那么说明右边的数据比较大,这时也就不用移动位置了  while(left_min < left_max)  {  //如果left_min小于left_max,说明现在左边的数据比较大  //直接把它们接到数组的min之前就行  k[--right_min] = k[--left_max];   }  while(next>0)  {  //把排好序的那部分数组返回该k  k[--right_min] = temp[--next];        }  }  }  
}  
//非递归的方法,避免了递归时深度为log2N的栈空间,
//空间只是用到归并临时申请的跟原来数组一样大小的空间,并且在时间性能上也有一定的提升,
//因此,使用归并排序是,尽量考虑用非递归的方法。

5 快速排序

5.1 过程

快速排序从小到大排序:在数组中随机选一个数(默认数组首个元素),数组中小于等于此数的放在左边,大于此数的放在右边,再对数组两边递归调用快速排序,重复这个过程。

5.2 动图

5.3 核心代码(函数)

推荐程序(好理解)

//接口调整
void adjust_quicksort(int k[],int n)  
{  quicksort(k,0,n-1);  
}  
void quicksort(int a[], int left, int right)  
{  int i,j,t,temp;  if(left>right)   //(递归过程先写结束条件)return;  temp=a[left]; //temp中存的就是基准数  i=left;  j=right;  while(i!=j)  {  //顺序很重要,要先从右边开始找(最后交换基准时换过去的数要保证比基准小,因为基准                               //选取数组第一个数,在小数堆中) while(a[j]>=temp && i<j)  j--;  //再找右边的  while(a[i]<=temp && i<j)  i++;  //交换两个数在数组中的位置  if(i<j)  {  t=a[i];  a[i]=a[j];  a[j]=t;  }  }  //最终将基准数归位 (之前已经temp=a[left]过了,交换只需要再进行两步)a[left]=a[i];  a[i]=temp;  quicksort(left,i-1);//继续处理左边的,这里是一个递归的过程  quicksort(i+1,right);//继续处理右边的 ,这里是一个递归的过程  
}  

6 堆排序

6.1 过程

堆排序从小到大排序:首先将数组元素建成大小为n的大顶堆,堆顶(数组第一个元素)是所有元素中的最大值,将堆顶元素和数组最后一个元素进行交换,再将除了最后一个数的n-1个元素建立成大顶堆,再将最大元素和数组倒数第二个元素进行交换,重复直至堆大小减为1。

  • 注:完全二叉树 
    假设二叉树深度为n,除了第n层外,n-1层节点都有两个孩子,第n层节点连续从左到右。如下图 
    这里写图片描述

  • 注:大顶堆 
    大顶堆是具有以下性质的完全二叉树:每个节点的值都大于或等于其左右孩子节点的值。 
    即,根节点是堆中最大的值,按照层序遍历给节点从1开始编号,则节点之间满足如下关系: 
    这里写图片描述 (1<=i<=n/2)

6.2 动图

 
 

6.3 核心代码(函数)

这里写图片描述
注意!!!数组从1开始,1~n

void heapSort(int array[], int n)
{int i;for (i=n/2;i>0;i--){HeapAdjust(array,i,n);//从下向上,从右向左调整}for( i=n;i>1;i--){swap(array, 1, i);HeapAdjust(array, 1, i-1);//从上到下,从左向右调整}
}
void HeapAdjust(int array[], int s, int n )
{int i,temp;temp = array[s];for(i=2*s;i<=n;i*=2){if(i<n&&array[i]<array[i+1]){i++;}if(temp>=array[i]){break;}array[s]=array[i];s=i;}array[s]=temp;
}
void swap(int array[], int i, int j)
{int temp;temp=array[i];array[i]=array[j];array[j]=temp;
}

7 希尔排序

7.1 过程

希尔排序是插入排序改良的算法,希尔排序步长从大到小调整,第一次循环后面元素逐个和前面元素按间隔步长进行比较并交换,直至步长为1,步长选择是关键。

7.2 动图

这里写图片描述

7.3 核心程序(函数)

//下面是插入排序
void InsertSort( int array[], int n)
{int i,j,temp;for( i=0;i<n;i++ ){if(array[i]<array[i-1]){temp=array[i];for( j=i-1;array[j]>temp;j--){array[j+1]=array[j];}array[j+1]=temp;}}
}
//在插入排序基础上修改得到希尔排序
void SheelSort( int array[], int n)
{int i,j,temp;int gap=n; //~~~~~~~~~~~~~~~~~~~~~do{gap=gap/3+1;  //~~~~~~~~~~~~~~~~~~for( i=gap;i<n;i++ ){if(array[i]<array[i-gap]){temp=array[i];for( j=i-gap;array[j]>temp;j-=gap){array[j+gap]=array[j];}array[j+gap]=temp;}}}while(gap>1);  //~~~~~~~~~~~~~~~~~~~~~~}

8 桶排序(基数排序和基数排序的思想)

8.1 过程

桶排序是计数排序的变种,把计数排序中相邻的m个”小桶”放到一个”大桶”中,在分完桶后,对每个桶进行排序(一般用快排),然后合并成最后的结果。

8.2 图解

8.3 核心程序

#include <stdio.h>
int main()
{int a[11],i,j,t;for(i=0;i<=10;i++)a[i]=0;  //初始化为0for(i=1;i<=5;i++)  //循环读入5个数{scanf("%d",&t);  //把每一个数读到变量t中a[t]++;  //进行计数(核心行)}for(i=0;i<=10;i++)  //依次判断a[0]~a[10]for(j=1;j<=a[i];j++)  //出现了几次就打印几次printf("%d ",i);getchar();getchar(); //这里的getchar();用来暂停程序,以便查看程序输出的内容//也可以用system("pause");等来代替return 0;
}

9 计数排序

9.1 过程

算法的步骤如下: 
- 找出待排序的数组中最大和最小的元素 
- 统计数组中每个值为i的元素出现的次数,存入数组C的第i项 
- 对所有的计数累加(从C中的第一个元素开始,每一项和前一项相加) 
- 反向填充目标数组:将每个元素i放在新数组的第C(i)项,每放一个元素就将C(i)减去1

9.2 图解

这里写图片描述

9.3 核心程序(函数)

程序1:
#define NUM_RANGE (100)    //预定义数据范围上限,即K的值void counting_sort(int *ini_arr, int *sorted_arr, int n)  //所需空间为 2*n+k
{  int *count_arr = (int *)malloc(sizeof(int) * NUM_RANGE);  int i, j, k;  //初始化统计数组元素为值为零 for(k=0; k<NUM_RANGE; k++){  count_arr[k] = 0;  }  //统计数组中,每个元素出现的次数    for(i=0; i<n; i++){  count_arr[ini_arr[i]]++;  }  //统计数组计数,每项存前N项和,这实质为排序过程for(k=1; k<NUM_RANGE; k++){  count_arr[k] += count_arr[k-1];  }  //将计数排序结果转化为数组元素的真实排序结果for(j=n-1 ; j>=0; j--){  int elem = ini_arr[j];          //取待排序元素int index = count_arr[elem]-1;  //待排序元素在有序数组中的序号sorted_arr[index] = elem;       //将待排序元素存入结果数组中count_arr[elem]--;              //修正排序结果,其实是针对算得元素的修正}  free(count_arr);  
}  程序2:C++(最大最小压缩桶数)
public static void countSort(int[] arr) {if (arr == null || arr.length < 2) {return;}int min = arr[0];int max = arr[0];for (int i = 1; i < arr.length; i++) {min = Math.min(arr[i], min);max = Math.max(arr[i], max);}int[] countArr = new int[max - min + 1];for (int i = 0; i < arr.length; i++) {countArr[arr[i] - min]++;}int index = 0;for (int i = 0; i < countArr.length; i++) {while (countArr[i]-- > 0) {arr[index++] = i + min;}
}

10 基数排序

10.1 过程

基数排序是基于数据位数的一种排序算法。 
它有两种算法 
①LSD–Least Significant Digit first 从低位(个位)向高位排。 
②MSD– Most Significant Digit first 从高位向低位(个位)排。 
时间复杂度O(N*最大位数)。 
空间复杂度O(N)。

10.2 图解

这里写图片描述 
对a[n]按照个位0~9进行桶排序: 
这里写图片描述 
对b[n]进行累加得到c[n],用于b[n]中重复元素计数 
!!!b[n]中的元素为temp中的位置!!!跳跃的用++补上: 
这里写图片描述 
temp数组为排序后的数组,写回a[n]。temp为按顺序倒出桶中的数据(联合b[n],c[n],a[n]得到),重复元素按顺序输出: 
这里写图片描述

10.3 核心程序

//基数排序  
//LSD  先以低位排,再以高位排  
//MSD  先以高位排,再以低位排  
void LSDSort(int *a, int n)  
{  assert(a);  //判断a是否为空,也可以a为空||n<2返回int digit = 0;   //最大位数初始化for (int i = 0; i < n; ++i)  {   //求最大位数while (a[i] > (pow(10,digit)))  //pow函数要包含头文件math.h,pow(10,digit)=10^digit{  digit++;  }  }  int flag = 1;   //位数for (int j = 1; j <= digit; ++j)  {  //建立数组统计每个位出现数据次数(Digit[n]为桶排序b[n])  int Digit[10] = { 0 };  for (int i = 0; i < n; ++i)  {  Digit[(a[i] / flag)%10]++;  //flag=1时为按个位桶排序}  //建立数组统计起始下标(BeginIndex[n]为个数累加c[n],用于记录重复元素位置//flag=1时,下标代表个位数值,数值代表位置,跳跃代表重复)int BeginIndex[10] = { 0 };  for (int i = 1; i < 10; ++i)  {  //累加个数BeginIndex[i] = BeginIndex[i - 1] + Digit[i - 1];  }  //建立辅助空间进行排序 //下面两条可以用calloc函数实现int *tmp = new int[n];  memset(tmp, 0, sizeof(int)*n);//初始化  //联合各数组求排序后的位置存在temp中for (int i = 0; i < n; ++i)  {  int index = (a[i] / flag)%10;  //桶排序和位置数组中的下标//计算temp相应位置对应a[i]中的元素,++为BeginIndex数组数值加1//跳跃间隔用++来补,先用再++tmp[BeginIndex[index]++] = a[i];  }  //将数据重新写回原空间  for (int i = 0; i < n; ++i)  {  a[i] = tmp[i];  }  flag = flag * 10;  delete[] tmp;  }  
}  

附:

1 完整程序框架(冒泡排序举例)

1.1 VS2010程序

#include "stdafx.h"
#include "stdio.h"
#include <stdlib.h>void BubbleSort(int array[], int n){int i,j,k,count1=0, count2=0;for(i=0; i<n-1; i++)for(j=n-1; j>i; j--){count1++;if(array[j-1]>array[j]){count2++;k=array[j-1];array[j-1]=array[j];array[j]=k;}}printf("总共的循环次序为:%d,  总共的交换次序为:%d\n\n", count1, count2);
}int main(int argc, _TCHAR* argv[])
{int as[]={0,1,2,3,4,6,8,5,9,7};BubbleSort(as, 10);for(int i=0; i<10; i++){printf("%d", as[i]);}printf("\n\n");system("pause");return 0;
}

1.2 执行程序(OJ)

#include <stdio.h>void BubbleSort(int array[], int n){int i,j,k,count1=0, count2=0;for(i=0; i<n-1; i++)for(j=n-1; j>i; j--){count1++;if(array[j-1]>array[j]){count2++;k=array[j-1];array[j-1]=array[j];array[j]=k;}}printf("总共的循环次序为:%d,  总共的交换次序为:%d\n\n", count1, count2);
}int main()
{int as[]={0,1,2,3,4,6,8,5,9,7};BubbleSort(as, 10);int i=0;for(i=0; i<10; i++){printf("%d", as[i]);}return 0;
}

2 关于交换的优化

不用中间变量进行交换

if(A[j] <= A[i]){A[j] = A[j] + A[i];A[i] = A[j] - A[i];A[j] = A[j] - A[i];
}

3 C语言实现数组动态输入

#include <stdio.h>  
#include <assert.h>  //断言头文件
#include <stdlib.h>  int main(int argc, char const *argv[])  
{  int size = 0;  scanf("%d", &size);   //首先输入数组个数assert(size > 0);     //判断数组个数是否非法int *array = (int *)calloc(size, sizeof(int));  //动态分配数组if(!R1)  {  return;           //申请空间失败  }  int i = 0;  for (i = 0; i < size; ++i) {  scanf("%d", &array[i]);  }  mergeSort(array, size);  printArray(array, size);  free(array);  return 0;  
} 

注: 
1.colloc与malloc类似,但是主要的区别是存储在已分配的内存空间中的值默认为0,使用malloc时,已分配的内存中可以是任意的值. 
2.colloc需要两个参数,第一个是需要分配内存的变量的个数,第二个是每个变量的大小.

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 10个免费网络管理工具

    作为一名资深网络工程师,在15年以上的职业生涯中,你可能经历过在各种环境中进行评估,使用了大量的开源网络工具。有些实在是有太多的bug,比如缺乏关键功能或太耗时。你可能也在苦苦寻求着好用的免费网络管理工具,在本文中,我将为您介绍10个免费的网络工具,我相信它们在企…...

    2024/5/5 21:03:46
  2. Java快速排序算法的实现

    高快省的排序算法有没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”啦!光听这个名字是不是就觉得很高端呢。假设我们现在对“6 1 2 7 9 3 4 5 10 8”这个10个数进行排序。首先在这个序列中随便找一个数作为基准数(不要被这个名词吓到了,就是一个用来…...

    2024/4/21 8:10:22
  3. 在Preference标签中,为标签加参数,实现带参数跳转

    转自: https://my.oschina.net/artshell/blog/397132在为应用开发设置界面中时,一般会使用PreferenceActivity或者PreferenceFragment类来实现.在写xml文件时,可以通过为Preference标签添加intent标签的方法来实现点击跳转,而且可以在intent标签中添加额外的参数.这样就不用再去…...

    2024/4/21 8:10:21
  4. 局域网指定ip断网工具源码

    只适用于小型局域网 开发环境 windowsxp vs2005WinPcap1. 局域网环境如下 192.168.1.104(00-0b-2f-43-93-7f) 192.168.1.109(00-18-DE-C5-FD-6F) 192.168.1.1(00-27-19-a3-3f-12) 2.由于 192.168.1.104 天天用直播软件,或者一天到晚的迅雷下个不停,使得192.168.1.109 使…...

    2024/4/21 8:10:21
  5. centos下监控每个线程的网络流量工具 nethogs

    软件环境:CentOS 5.8 64bit因工作需要,需要监控linux进程的网络流量,通过搜索找到一款终端下的网络流量监控工具–nethogs,可以显示每个进程的带宽占用情况,能够更直观获取网络使用情况,运行界面类似top。。nethogs支持 IPv4 和 IPv6 协议,支持本地网卡及 PPP 链接。该程…...

    2024/4/21 8:10:19
  6. Java 加密 AES 对称加密算法

    【AES】 一种对称加密算法,DES的取代者。 加密相关文章见:Java 加密解密 对称加密算法 非对称加密算法 MD5 BASE64 AES RSA【代码】 代码比较多,有一部分非本文章内容代码,具体自己看吧。package com.uikoo9.util.encrypt;import java.math.BigInteger; import java.securi…...

    2024/5/9 12:20:17
  7. 数据结构中常用的排序算法

    排序常用的算法有:插入算法(直接插入算法、折半插入算法、希尔算法)、选择算法(简单选择算法、堆排序算法)、快速算法(冒泡排序、快速排序算法) 以下程序给出了各种算法的实现,其接口为void sort(int *array,int len),每个文件实现一个算法, 最后和main.c文件编译实现。…...

    2024/4/21 8:10:17
  8. PreferenceActivity中,Header是如何被加载的?

    转载请注明出处:http://blog.csdn.net/droyon/article/details/17798697----------------------------------------------------- 本文主要回答下面这个问题: Android中,Header是如何被PreferenceActivity进行加载的? ---------------------------------------------------…...

    2024/4/30 16:41:12
  9. 跨网段远程开机技巧

    很多文章都有介绍如何通过网络发一个特殊广播包来远程启动另一计算机的,但是没有细说网段内和跨网段的情况下发送广播包的区别,即发特殊包的计算机和需要开机的计算机没有网关隔离和有网关隔离的情况下都该怎么操作。要进行远程开机,首先需要开机的计算机硬件(电源、主板和…...

    2024/4/24 14:08:42
  10. java之常见的gc算法

    引用计数法 Reference Counting 给对象添加一个引用计数器,每过一个引用计数器值就+1,少一个引用就-1。当它的引用变为0时,该对象就不能再被使用。它的实现简单,但是不能解决互相循环引用的问题。 根搜索算法 GC Roots Tracing 以一系列叫“GC Roots”的对象为起点开始向下…...

    2024/5/6 7:51:29
  11. Linux常用网络工具总结

    原文链接:http://int32bit.me/2016/05/04/Linux常用网络工具总结/本文整理了在实践过程中使用的Linux网络工具,这些工具提供的功能非常强大,我们平时使用的只是冰山一角,比如lsof、ip、tcpdump、iptables等。本文不会深入研究这些命令的强大用法,因为每个命令都足以写一篇…...

    2024/4/25 7:33:15
  12. 【算法导论】堆排序

    堆排序,首先要了解一下这里的堆是什么,这里的堆其实就是二叉树,很形象是不是,完整的二叉树从头看起,就是一个三角形,也可以看成一个“堆”。一、数组转换成堆那么首先要解决的问题就是给数组排序,如何转换成二叉树的?转换方法如图: 数组 int a[],包含元素a[0],a[1],…...

    2024/5/6 15:50:12
  13. 隐藏(删除) Preference 小结

    隐藏 Preference 有两种方法: 一、先在xml布局里面删,然后在java里面删掉调用的相关部分,但如果很多地方都有调用,那么删除就很麻烦; 二、用removePreference(Preference preference) 方法删除;//推荐方法实例:testpreference.xml 代码:<?xml version="1.0&quo…...

    2024/4/20 9:41:00
  14. lanhelper1.83 注册

    注册名:lanhelper1.83;注册码:LH4A8N6F#8J&4TMZTZD...

    2024/5/6 13:03:55
  15. Java排序算法(十三):补充-洗牌算法

    Java排序算法(十三):补充-洗牌算法这个算法的要求是这样的:将N个数乱序后输出.由于和扑克牌的洗牌过程比较相似所以我也就称为洗牌算法了.很多地方都不自觉的需要这个算法的支持.也可以将这个算法扩展为从N个数中取出M个不重复的数(0<M<=N).思路:有n个数据的数据列,…...

    2024/5/6 8:18:40
  16. 堆排序总结

    在面试中遇到要你手写堆排序,可以先询问是否可以使用STL中建堆的算法,问清楚面试官的意图之后方可动手写代码,交流最重要。 heap并不属于STL组件,是一个幕后英雄,STL实现了最大堆,默认的元素比较方式是less<T>,如果要使用小根堆,则将比较方式设置为greater<T&…...

    2024/5/6 10:02:56
  17. lanhelper

    文章共享 - 《电脑报》- 2005.8 用LanHelper实现批量远程开关机【导读】针对学校机房、网吧等局域网内计算机数量较多的网络来说,进行远程的统一开关电脑是网管们比较喜欢的管理方式。  针对学校机房、网吧等局域网内计算机数量较多的网络来说,进行远程的统一开关电脑是网…...

    2024/5/6 8:03:50
  18. Java的递归算法

    递归算法设计的基本思想是:对于一个复杂的问题,把原问题分解为若干个相对简单类同的子问题,继续下去直到子问题简单到能够直接求解,也就是说到了递推的出口,这样原问题就有递推得解。 关键要抓住的是: (1)递归出口 (2)地推逐步向出口逼近 例子: example: 求5的阶乘。…...

    2024/5/6 8:51:18
  19. [大、小根堆应用总结一]堆排序的应用场景

    前言在整理算法题的时候发现,大根堆(小根堆)这种数据结构在各类算法中应用比较广泛,典型的堆排序,以及利用大小根堆这种数据结构来找出一个解决问题的算法最优解。因此,我打算单独将关于堆的应用独立总结出来,后面每遇到一种跟堆结构相关的应用都放到这个目录下。堆的定…...

    2024/5/6 11:16:39
  20. Android PreferenceActivity 详解教程

    2 月前 767次访问作者:admin 来源:eoe开发者社区关键词: Android PreferenceActivity 详解导读:根据已学知识 很快一个念头闪过 即:Activity Preference 组合 前者用于界面构建 后者用于设置数据存放 其实 这是正确的 但是 这会比较繁琐 因为 每个设置选项 都要建立与其…...

    2024/5/6 8:56:59

最新文章

  1. 初装byzer notebook,启动错误

    原因是jdk版本不对 (base) gw00241401gw00241401-pc:/data/tools/byzer-notebook$ sudo update-alternatives --config java There are 4 choices for the alternative java (providing /usr/bin/java). Selection Path Priori…...

    2024/5/9 13:18:06
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/5/7 10:36:02
  3. 【前缀合】Leetcode 寻找数组的中心下标

    题目解析 724. 寻找数组的中心下标 算法讲解 我们使用一个前缀和数组&#xff0c;一个后缀和数组 class Solution { public:int pivotIndex(vector<int>& nums) {// lsum[i] 表⽰&#xff1a;[0, i - 1] 区间所有元素的和// rsum[i] 表⽰&#xff1a;[i 1, n - …...

    2024/4/30 2:23:40
  4. 《前端防坑》- JS基础 - 你觉得typeof nullValue === null 么?

    问题 JS原始类型有6种Undefined, Null, Number, String, Boolean, Symbol共6种。 在对原始类型使用typeof进行判断时, typeof stringValue string typeof numberValue number 如果一个变量(nullValue)的值为null&#xff0c;那么typeof nullValue "?" const u …...

    2024/5/8 15:11:50
  5. 3d representation的一些基本概念

    顶点&#xff08;Vertex&#xff09;&#xff1a;三维空间中的一个点&#xff0c;可以有多个属性&#xff0c;如位置坐标、颜色、纹理坐标和法线向量。它是构建三维几何形状的基本单元。 边&#xff08;Edge&#xff09;&#xff1a;连接两个顶点形成的直线段&#xff0c;它定…...

    2024/5/9 12:47:25
  6. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/8 6:01:22
  7. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/7 9:45:25
  8. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/5/4 23:54:56
  9. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/9 4:20:59
  10. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/5/4 23:54:56
  11. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/5/4 23:55:05
  12. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/5/4 23:54:56
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/5/7 11:36:39
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/5/4 23:54:56
  15. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/6 1:40:42
  16. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/5/4 23:54:56
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/5/8 20:48:49
  18. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/5/7 9:26:26
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/5/4 23:54:56
  20. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/8 19:33:07
  21. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/5/5 8:13:33
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/5/8 20:38:49
  23. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/5/4 23:54:58
  24. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/9 7:32:17
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/5/4 23:54:56
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; 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
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在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