当前位置: 首页 > news >正文

数据结构 排序

目录

  • 第八章 排序
  • 8.1排序的基本概念
    • 1. 概念
    • 2. 排序算法的分类
  • 8.2 插入排序
    • 8.2.1 直接插入排序
    • 8.2.2 算法效率分析
    • 8.2.2 折半插入排序
    • 总结
    • 8.2.3 希尔排序
  • 8.3 交换排序
    • 8.3.1冒泡排序
    • 8.3.2快速排序(了解栈的过程)
  • 8.4 选择排序
    • 8.4.1 简单选择排序
    • 8.4.2 堆排序
    • 8.4.3 堆的插入删除
  • 8.5 归并排序(Merge Sort)内外部排序
  • 8.6 基数排序(Radix Sort)
      • 排序方式
      • 递减
      • 递增
      • 算法效率分析
      • 基数排序的应用
  • 各种内部排序算法的比较及应用
  • 内部排序算法的应用
  • 8.7 外部排序
  • 8.7.1 归并排序的实现
    • 内存、外存之间的数据交换
    • 外部排序原理
    • 时间开销分析
    • 优化
      • 多路归并
      • 减少初始归并段数量
    • 什么是多路平衡归并?
  • 8.7.2 败者树
    • 败者树的构造
    • 败者树的使用
    • 败者树在多路平衡归并中的应用
    • 败者树的实现思路
  • 8.7.3 置换-选择排序
  • 8.7.4 最佳归并树
    • 归并树的性质
    • 构造2路归并的最佳归并树
    • 多路归并的情况
    • 添加虚段的数量
  • 数据结构结束

第八章 排序

8.1排序的基本概念

1. 概念

在这里插入图片描述

  • 排序:重新排列表中的元素,使表中元素满足按关键字有序的过程(关键字可以相同)
  • 排序算法的评价指标:时间复杂度、空间复杂度;
  • 排序算法的稳定性:关键字相同的元素在排序之后相对位置不变,称为稳定的;(选择题考查)

Q: 稳定的排序算法一定比不稳定的好?
A: 不一定,要看实际需求;

2. 排序算法的分类

在这里插入图片描述

  • 内部排序: 数据都在内存——关注如何使时间、空间复杂度更低;
  • 外部排序: 数据太多,无法全部放入内存——关注如何使时间、空间复杂度更低,如何使读/写磁盘次数更少;

之所以有这种分类是因为磁盘的容量一般远大于内存,而运算速度又远不如内存。因此排序算法不仅要关注时间和空间复杂度,有时考虑到内存容量的问题还要关注如何使读/写磁盘次数更少

8.2 插入排序

8.2.1 直接插入排序

  • 算法思想: 每次将一个待排序的记录按其关键字大小,插入(依次对比、移动)到前面已经排好序的子序列中,直到全部记录插入完成

  • 代码实现:
    在这里插入图片描述

不带“哨兵”

void InsertSort(int A[], int n){    //A中共n个数据元素int i,j,temp;for(i=1; i<n; i++)if(A[i]<A[i-1]){    //A[i]关键字小于前驱temp = A[i];  for(j=i-1; j>=0 && A[j]>temp; --j)A[j+1] = A[j];     //所有大于temp的元素都向后挪A[j+1] = temp;         //复制到插入位置}
}

带“哨兵” ,优点:不用每轮循环都判断j>=0
在这里插入图片描述

void InsertSort(int A[], int n){    //A中从1开始存储,0放哨兵int i,j;for(i=1; i<n; i++)if(A[i]<A[i-1]){    A[0] = A[i];     //复制为哨兵for(j=i-1; A[0] < A[j]; --j)  //从后往前查找待插入位置A[j+1] = A[j];     //向后挪动A[j+1] = A[0];          //复制到插入位置}
}

8.2.2 算法效率分析

  • 空间复杂度:O(1)

  • 时间复杂度:主要来自于对比关键字、移动关键字,若有n个元素,则需要n-1次处理

  • 最好情况: 原本为有序,共n-1趟处理,每一趟都只需要对比1次关键字,不需要移动元素,共对比n-1次 —— O(n)

  • 最差情况: 原本为逆序 —— O(n²)

  • 平均情况:O(n²)

  • 算法稳定性:稳定

8.2.2 折半插入排序

思路: 先用折半查找找到应该插入的位置,再移动元素;

  • 为了保证稳定性,当查找到和插入元素关键字一样的元素时,应该继续在这个元素的右半部分继续查找以确认位置; 即当 A[mid] == A[0] 时,应继续在mid所指位置右边寻找插入位置

  • 当low>high时,折半查找停止,应将[low,i-1]or[high+1,i-1]内的元素全部右移,并将A[0]复制到low所指的位置

代码实现

void InsertSort(int A[], int n){ int i,j,low,high,mid;for(i=2;i<=n;i++){A[0] = A[i];                    //将A[i]暂存到A[0]low = 1; high = i-1;            //折半查找的范围while(low<=high){               //折半查找mid = (low + high)/2;       //取中间点if(A[mid]>A[0])             //查找左半子表high = mid - 1;else                        //查找右半子表low = mid + 1;}for(j=i-1; j>high+1;--j)       //统一后移元素,空出插入位置A[j+1] = A[j];A[high+1] = A[0]}
}
  • 与直接插入排序相比,比较关键字的次数减少了,但是移动元素的次数没有变,时间复杂度仍然是O(n²)

  • 对链表进行插入排序
    移动元素的次数变少了,因为只需要修改指针,不需要依次右移
    但是关键字对比的次数依然是O(n²)数量级,因此整体看来时间复杂度仍然是O(n²)

总结

在这里插入图片描述

8.2.3 希尔排序

在这里插入图片描述
在这里插入图片描述

思路: 先追求表中元素的部分有序,再逐渐逼近全局有序;

更适用于基本有序的排序表和数据量不大的排序表,仅适用于线性表为顺序存储的情况

代码实现

void ShellSort(ElemType A[], int n){//A[0]为暂存单元for(dk=n/2; dk>=1; dk=dk/2)   //步长递减(看题目要求,一般是1/2for(i=dk+1; i<=n; ++i)if(A[i]<A[i-dk]){A[0]=A[i];for(j=i-dk; j>0&&A[0]<A[j];j-=dk)A[j+dk]=A[j];         //记录后移,查找插入的位置A[j+dk]=A[0;]             //插入}
}i++会切换着处理每个子表

算法效率分析

  • 空间效率:空间复杂度=O(1)
  • 时间效率: 最坏情况下时间复杂度=O(n²)
  • 稳定性:希尔排序是一种不稳定的排序方法
  • 在这里插入图片描述

8.3 交换排序

基于“交换”的排序根据序列中两个元素关键字的比较结果来对换这两个记录再序列中的位置;

8.3.1冒泡排序

在这里插入图片描述

第一趟排序使关键字值最小的一个元素“冒”到最前面(其最终位置)—— 每趟冒泡的结果是把序列中最小元素放到序列的最终位置,这样最多做n-1趟冒泡就能把所有元素排好序;

为保证稳定性,关键字相同的元素不交换;
在这里插入图片描述

代码实现

//交换
void swap(int &a,int&b){int temp=a;a=b;b=temp;
}//冒泡排序
void BubbleSort(int A[],int n){for(int i=0;i<n-1;i++){            bool flag=false;               //表示本趟冒泡是否发生交换的标志for(int j=n-1;j>i;j--)         //一趟冒泡过程if(A[j-1]>A[j]){           //若为逆序swap(A[j-1],A[j]);     //交换flag=true;}if(flag==false)return;                    //本趟遍历后没有发生交换,说明表已经有序}
}

算法效率分析

  • 空间复杂度:O(1)
  • 时间复杂度
  • 最好情况 (有序) :只需要一趟排序,比较次数=n-1,交换次数=0,最好时间复杂度=O(n)
  • 最坏情况 (逆序) :比较次数 = (n-1)+(n-2)+…+1 = n(n-1)/2 = 交换次数,最坏时间复杂度 = O(n²),平均时间复杂度 = O(n²)
  • 交换次数和移动次数不是一个概念在这里插入图片描述在这里插入图片描述
    冒泡排序可以用于链表、顺序表

8.3.2快速排序(了解栈的过程)

每一趟排序都可使一个中间元素确定其最终位置
用一个元素(不一定是第一个)把待排序序列“划分”为两个部分,左边更小,右边更大,该元素的最终位置已确认

在这里插入图片描述
在这里插入图片描述

算法实现(重点)

//快速排序
void QuickSort(int A[],int low,int high){if(low<high){   //递归跳出的条件int pivotpos=Partition(A,low,high); //划分QuickSort(A,low,pivotpos-1);        //划分左子表QuickSort(A,pivotpos+1,high);       //划分右子表}
}//用第一个元素将待排序序列划分为左右两个部分
int Partition(int A[],int low,int high){int pivot=A[low];   //第一个元素作为枢轴while(low<high){while(low<high&&A[high]>=pivot) --high;         A[low]=A[high];     //比枢轴小的元素移动到左端while(low<high&&A[low]<=pivot)  ++low;         A[high]=A[low];     //比枢轴大的元素移动到右端}   A[low]=pivot;           //枢轴元素存放到最终位置return low;             //返回存放枢轴的最终位置
}

算法效率分析

每一层的QuickSort只需要处理剩余的待排序元素,时间复杂度不超过O(n);
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 若每次选中的“枢轴”将待排序序列划分为均匀的两个部分,则递归深度最小,算法效率最高

  • 若每次选中的“枢轴”将待排序序列划分为很不均匀的两个部分,则会导致递归深度增加,算法效率变低

  • 若初始序列有序或逆序,则快速排序的性能最差(因为每次选择的都是最靠边的元素)

在这里插入图片描述
在这里插入图片描述

8.4 选择排序

每一趟结束就会有一个元素的左边是全小于等于右边是全大于等于
在这里插入图片描述

8.4.1 简单选择排序

在这里插入图片描述

n个元素的简单选择排序需要n − 1趟处理

最后剩一个不用再处理(最后一个一定是最值)

算法实现

//交换
void swap(int &a,int&b){int temp=a;a=b;b=temp;
}//简单选择排序
void SelectSort(int A[],int n){for(int i=0;i<n-1;i++){            //一共进行n-1趟int min=i;                     //记录最小元素位置for(int j=i+1;j<n;j++)         //在A[i...n-1]中选择最小的元素if(A[j]<A[min]) min=j;     //更新最小元素位置if(min!=i) swap(A[i],A[min]);  //封装的swap()函数共移动元素3次}
}

算法性能分析
在这里插入图片描述
在这里插入图片描述

8.4.2 堆排序

在这里插入图片描述

堆的定义
在这里插入图片描述
在这里插入图片描述
建立大根堆
大根堆:根≥ 左 右

  • 思路:把所有非终端结点都检查一遍,是否满足大根堆的要求,如果不满足,则进行调整

  • 检查当前结点是否满足根≥ \ge≥左,右。若不满足,将当前结点与更大的一个孩子互换

  • 若元素互换破坏了下一级的堆,则采用相同的方法继续往下调整(小元素不断“下坠”)

在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述


代码实现

//建立大根堆
void BuildMaxHeap(int A[],int len){for(int i=len/2;i>0;i--){      //从后往前调整所有非终端结点HeadAdjust(A,i,len);}
}//将以 k 为根的子树调整为大根堆
void HeadAdjust(int A[],int k,int len){A[0]=A[k];                     //A[0]暂存子树的根结点for(int i=2*k;i<=len;i*=2){    //沿key较大的子结点向下筛选if(i<len&&A[i]<A[i+1])i++;                   //取key较大的子结点的下标if(A[0]>=A[i]) break;      //筛选结束else{A[k]=A[i];             //将A[i]调整到双亲结点上k=i;                   //修改k值,以便继续向下筛选}}A[k]=A[0]                      //将被筛选结点的值放入最终位置
}

堆排序的完整逻辑
在这里插入图片描述

//建立大根堆
void BuildMaxHeap(int A[],int len)//将以k为根的子树调整为大根堆
void HeadAdjust(int A[],int k,int len)//堆排序的完整逻辑
void HeapSort(int A[],int len){BuildMaxHeap(A,len);         //初始建堆for(int i=len;i>1;i--){      //n-1趟的交换和建堆过程     swap(A[i],A[1]);         //堆顶元素和堆底元素交换HeadAdjust(A,1,i-1);     //把剩余的待排序元素整理成堆}
}

算法效率分析
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
堆排序是不稳定的

8.4.3 堆的插入删除

在这里插入图片描述

  • 在堆中插入新元素
    对于小根堆,新元素放到表尾,与父节点对比,若新元素比父节点更小,则将二者互换。新元素就这样一路“上升”,直到无法继续上升为止

  • 在堆中删除元素
    被删除的元素用堆顶元素替代,然后让该元素不断“下坠”,直到无法下坠为止

8.5 归并排序(Merge Sort)内外部排序

在这里插入图片描述

在这里插入图片描述

Merge(归并/合并)

  • 归并:把两个或多个已经有序的序列合并成一个

“2路”归并 —— 每选出一个小元素就需对比关键字1次。“4路”归并 —— 每选出一个小元素就需对比关键字3次。故m路归并,每选出一个元素需要对比关键字m − 1次

归并排序(手算模拟)
在内部排序中一般采用2路归并

核心操作:把数组内的两个有序序列归并为一个
在这里插入图片描述

代码实现

int *B=(int *)malloc(n*sizeof(int)); //辅助数组B//A[low...mid]和A[mid+1...high]各自有序,将两个部分归并
void Merge(int A[],int low,int mid,int high){int i,j,k;for(k=low,k<=high;k++)B[k]=A[k];        //把A中所有元素复制到B中for(i=low,j=mid+1,k=i;i<=mid&&j<=high,k++){if(B[i]<=B[j])    A[k]=B[i++];  //将较小值复制到A中elseA[k]=B[j++];}//forwhile(i<=mid)   A[k++]=B[i++];  while(j<=high)  A[k++]=B[j++];
}void MergeSort(int A[],int low,int high){if(low<high){int mid=(low+high)/2;     //从中间划分MergeSort(A,low,mid);     //对左半部分归并排序MergeSort(A,mid+1,high); //对右半部分归并排序Merge(A,low,mid,high);    //归并}//if
}

在这里插入图片描述
算法效率分析
在这里插入图片描述
而递归栈的空间复杂度是 l o g 2 n log_2^n log2n,选取最大的就是辅助数组带来的空间复杂度
两个元素相等时,优先使用靠前的那个。归并排序是稳定的

8.6 基数排序(Radix Sort)

在这里插入图片描述

基数排序
可见基数排序不是基于“比较”的排序算法

排序方式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

递减

在这里插入图片描述

递增

在这里插入图片描述

算法效率分析

基数排序通常基于链式存储实现
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

基数排序的应用

在这里插入图片描述
在这里插入图片描述

各种内部排序算法的比较及应用

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

内部排序算法的应用

在这里插入图片描述
在这里插入图片描述

8.7 外部排序

8.7.1 归并排序的实现

在这里插入图片描述

内存、外存之间的数据交换

在这里插入图片描述

外部排序原理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

时间开销分析

读写都是一块一块
在这里插入图片描述

优化

在这里插入图片描述

多路归并

在这里插入图片描述

减少初始归并段数量

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

什么是多路平衡归并?

在这里插入图片描述
图没错,定义错了

图错的例子,如下
在这里插入图片描述

8.7.2 败者树

在这里插入图片描述

败者树的构造

在这里插入图片描述
在这里插入图片描述

败者树的使用

在这里插入图片描述
在这里插入图片描述

败者树在多路平衡归并中的应用

在这里插入图片描述
在这里插入图片描述

败者树的实现思路

从不同位置插入元素,会经过不同层数,也就是不同的对比次数
在这里插入图片描述

8.7.3 置换-选择排序

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8.7.4 最佳归并树

在这里插入图片描述

归并树的性质

在这里插入图片描述

构造2路归并的最佳归并树

在这里插入图片描述

多路归并的情况

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

添加虚段的数量

在这里插入图片描述

数据结构结束

在这里插入图片描述

相关文章:

数据结构 排序

目录 第八章 排序8.1排序的基本概念1. 概念2. 排序算法的分类 8.2 插入排序8.2.1 直接插入排序8.2.2 算法效率分析8.2.2 折半插入排序总结8.2.3 希尔排序 8.3 交换排序8.3.1冒泡排序8.3.2快速排序&#xff08;了解栈的过程&#xff09; 8.4 选择排序8.4.1 简单选择排序8.4.2 堆…...

Cpp/Qtday050912cpp基础

目录 实现一个图形类&#xff08;Shape&#xff09;&#xff0c;包含受保护成员属性&#xff1a;周长、面积&#xff0c; 公共成员函数&#xff1a;特殊成员函数书写 定义一个圆形类&#xff08;Circle&#xff09;&#xff0c;继承自图形类&#xff0c;包含私有属性&#x…...

Git diff 使用 vimdiff 对比差异

在Ubuntu中使用Git时&#xff0c;可使用命令行的git diff命令来对比两次提交的差异&#xff0c;但是这种对比查看方式无法直观地查看修改的差异&#xff0c;在对比和查看时不太方便。 可以使用vimdiff作为Git diff的对比工具&#xff0c;这样就方便了许多&#xff0c;Git的配置…...

c小白勇闯结构体!!!!

目录 1.结构体类型的声明 1.结构的基础 2.结构体的声明 3.结构体成员的类型 4结构体变量的定义和初始化 2.结构体成员的访问 3.结构体传参 1.结构体类型的声明 1.结构的基础 结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量 结构体变量的创…...

【DevOps核心理念基础】3. 敏捷开发最佳实践

一、敏捷开发最佳实践 1.1 项目管理 1.2 需求管理 1.3 技术架构 1.4 技术开发 1.5 测试 二、敏捷开发最佳实践 2.1 敏捷开发的执行细节 三、全面的DevOps工具链 四、版本控制和协作开发工具 4.1 集中式版本控制工具 4.2 分布式版本控制工具 一、敏捷开发最佳实践 …...

二进制、数位dp:0912T3

考虑题目转化&#xff0c;二进制下满足 i ⊆ j , ( i x ) ⊆ ( j y ) i\subseteq j,(ix)\subseteq (jy) i⊆j,(ix)⊆(jy) 这显然是个数位dp形式 考虑枚举每一位与进位&#xff0c; d p k , p 1 , p 2 dp_{k,p_1,p_2} dpk,p1​,p2​​ 表示第 k − 1 k-1 k−1 位向第 k k…...

Java基于SpringBoot+Vue的 4S店车辆管理系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W,Csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 文章目录 1 简介2 技术栈3 功能总览4 系统设计4.1 系统设计主要功能4.2 数据库设计4.2.1 数据库设计规范4.2…...

助力智能化公路养护,基于YOLOv5s集成SPD-BIFPN-SE开发构建公路开裂检测识别系统

在前文中我们尝试构建了在隧道、涵洞尝尽下的自动智能化养护巡查相关的模型&#xff0c;进行了实地测试评估&#xff0c;感兴趣的话可以自行移步阅读即可&#xff1a; 《基于轻量级YOLOv5s开发构建隧道基建裂痕、脱落等缺陷问题检测系统》 本文的想法是相近的&#xff0c;核心…...

C++--day5

实现一个图形类&#xff08;Shape&#xff09;&#xff0c;包含受保护成员属性&#xff1a;周长、面积&#xff0c; 公共成员函数&#xff1a;特殊成员函数书写 定义一个圆形类&#xff08;Circle&#xff09;&#xff0c;继承自图形类&#xff0c;包含私有属性&#xff1a;半…...

Django应用部署实战:从开发到生产,全程解析

部署架构图 版本说明 Centos 7.4 Python 3.6.4 Django 2.0.2 Channels 2.0.0 MySql 5.7 uWSGI Nginx 1.12.2 部署前 1、更新系统环境 yum install epel-release 2、安装所有的开发工具包 yum groupinstall -y “Development tools” 一、安装python 3.6.4 1、下载 cd /usr/…...

群晖NAS如何在内网部署HTTPS服务让浏览器信任证书

前言 最近在折腾内部部署Web服务。通过Vue实现一个H5的内部的管理服务。但在实际部署过程中由于种种原因&#xff0c;必须部署成Https服务。但在部署成Https服务后&#xff0c;由于没有HTTPS证书&#xff0c;每次进入页面都会被浏览器拦截。使用起来非常不便。于是开始各种Goo…...

crAPI靶场学习记录

靶场搭建 [靶场下载地址](我fork了一份) docker安装&#xff0c;笔者是用的wsldocker. [lab0:**初始账户 **] 注册一个账户&#xff0c;邮箱为[APIqq.com]&#xff0c;密码为Admin123 登陆后访问对应IP的8025端口&#xff0c;接收邮件获取车辆信息。 [lab1:**访问其它用户车…...

知识图谱实战应用28-基于py2neo的ICD-11疾病分类的知识图谱的查询与问答实战应用

大家好,我是微学AI,今天给大家介绍一下知识图谱实战应用28-基于py2neo的ICD-11疾病分类的知识图谱的查询与问答实战应用。使用基于py2neo的ICD-11疾病分类知识图谱,我们能够像探索一座生物医学宇宙般,穿梭在各种疾病之间。这个神奇的图谱可以帮助我们揭示各种疾病之间复杂而…...

20.Xaml GroupBox控件 ---->带标题的内容控件

1.运行效果 2.运行源码 a.Xaml源码 <Window x:Class="testView.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.mic…...

基于CycleGAN的山水风格画迁移

基于CycleGAN的山水风格画迁移 1、简介 1.1 研究背景及意义 绘画是人类重要的一种艺术形式&#xff0c;其中中国的山水画源远流长&#xff0c;具有丰富的美学内涵&#xff0c;沉淀着中国人的情思。游山玩水的大陆文化意识&#xff0c;以山为德、水为性的内在修为意识&#x…...

​@Cacheable 注解​

1. 功能说明 Cacheable 注解在方法上&#xff0c;表示该方法的返回结果是可以缓存的。也就是说&#xff0c;该方法的返回结果会放在缓存中&#xff0c;以便于以后使用相同的参数调用该方法时&#xff0c;会返回缓存中的值&#xff0c;而不会实际执行该方法。 注意&#xff0c;这…...

vue3+ts项目打包后的本地访问

注意&#xff1a;打包之后不可直接点击html访问&#xff0c;需要给项目安装本地服务&#xff01; 1、安装servenpm i -g serve 2、打包项目npm run build 生成dist文件夹 3、本地访问serve dist 运行service dist之后的控制台 可复制下方的地址运行打包后的项目&#xff0c;运行…...

探索程序员需要掌握的算法?

文章目录 一&#xff1a;引言二&#xff1a;常见算法介绍三&#xff1a;重点算法总结 &#x1f389;欢迎来到数据结构学习专栏~探索程序员需要掌握的算法&#xff1f; ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨博客主页&#xff1a;IT陈寒的博客&#x1f388;该系列文章…...

性能测试 —— Jmeter定时器

固定定时器 如果你需要让每个线程在请求之前按相同的指定时间停顿&#xff0c;那么可以使用这个定时器&#xff1b;需要注意的是&#xff0c;固定定时器的延时不会计入单个sampler的响应时间&#xff0c;但会计入事务控制器的时间 1、使用固定定时器位置在http请求中&#xf…...

mp4视频太大怎么压缩?几种常见压缩方法

mp4视频太大怎么压缩&#xff1f;科技的飞速发展使得视频成为人们生活中不可或缺的一部分。然而&#xff0c;随着视频质量的不断提高&#xff0c;视频文件的大小也与日俱增&#xff0c;给我们的存储和传输带来了巨大的挑战和困扰。特别是MP4格式的视频&#xff0c;由于其出色的…...

论文复制ChatGPT按钮被发表,撤回后再曝多个类似案例;Midjourney 生成大师级的人像

&#x1f989; AI新闻 &#x1f680; 论文复制ChatGPT按钮被发表&#xff0c;撤回后再曝多个类似案例 摘要&#xff1a;一篇物理论文复制了ChatGPT按钮内容&#xff0c;经过两个月同行评审并在杂志上发表。这一现象被知名打假人发现后&#xff0c;发表商决定撤回该论文。此外…...

Python自动化测试 史上最全的进阶教程

Python自动化测试就是把以前人为测试转化为机器测试的一种过程。自动化测试是一种比手工测试更快获得故障反馈的方法。 随着时代的变革&#xff0c;也许在未来测试这个职位的需求会越来越少甚至消失&#xff0c;但是每一个组织&#xff0c;每一个客户对软件质量的要求是永远不…...

centos pip失效

在 CentOS 上安装和配置 pip3 可能需要以下步骤&#xff1a; 确保 Python 3 已正确安装&#xff1a;请确保您已经正确地安装了 Python 3。在 CentOS 上&#xff0c;Python 3 可能默认安装在 /usr/bin/python3 路径下。您可以通过运行以下命令来验证 Python 3 是否正确安装&…...

Java——》ThreadLocal

推荐链接&#xff1a; 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 总结——》【Linux】 总结——》【MongoD…...

如何做好利益相关方的期望管理?

利益相关方对项目而言非常重要&#xff0c;有效管理利益相关方的期望可以帮助项目团队更好地满足利益相关方的需求&#xff0c;助于建立良好的合作伙伴关系&#xff0c;提高项目的可持续性和成功率。 如果项目团队无法满足利益相关方的需求&#xff0c;可能会引发冲突、争议或其…...

【K8S系列】深入解析k8s网络插件—Canal

序言 做一件事并不难&#xff0c;难的是在于坚持。坚持一下也不难&#xff0c;难的是坚持到底。 文章标记颜色说明&#xff1a; 黄色&#xff1a;重要标题红色&#xff1a;用来标记结论绿色&#xff1a;用来标记论点蓝色&#xff1a;用来标记论点 在现代容器化应用程序的世界中…...

从单页面应用角度去解决不跳转页面,也能更改浏览器url地址

正常来说不刷新页面&#xff0c;也能更改浏览器url地址的方法有很多&#xff0c;我们在网上搜的话可以看到有pushState、replaceState、popstate等方法&#xff0c;那还有没有其他方法呢&#xff1f; 答案是有的&#xff01; 最近做一个vue商城项目的时候&#xff0c;用户点击支…...

Linux:keepalived + ipvsadm

介绍 Linux&#xff1a;keepalived 双热备份&#xff08;基础备份web&#xff09;_鲍海超-GNUBHCkalitarro的博客-CSDN博客https://blog.csdn.net/w14768855/article/details/132815057?spm1001.2014.3001.5501 环境 一台 centos7 keepalived ipvsadm &#xff08;主…...

Linux基础命令(示例代码 + 解释)

查看目录下文件 ls [-a -l -h] [路径] -a&#xff08;全部&#xff09; -l&#xff08;细节&#xff09; -h&#xff08;大小&#xff09; ls ls / ls -a ls -l ls -h ls -alh ls -l -h -a ls -lah /切换目录 cd [路径] change di…...

巨人互动|Google企业户Google“自动采纳建议”应该如何使用

在数字化时代&#xff0c;Google已经成为了人们获取信息的主要渠道之一。而在使用Google搜索时&#xff0c;你可能会发现下拉框中自动提供的搜索建议。这些搜索建议是基于用户搜索行为和相关数据进行推测&#xff0c;旨在使用户更快速地找到所需信息。而Google还提供了一项名为…...

购物网站app开发多少钱/seo建站优化推广

一.在屏幕上显示"Hello World!" /*显示“Hello World&#xff01;”。*/ #include<stdio.h> int main(void) {printf("Hello World!"); return 0; }/*注释文本*/ :是程序的注释&#xff0c;用来说明程序的功能&#xff0c;注释文本必须包含在/*和*/…...

行业网站建设多少钱/韩国搜索引擎排名

# -*- coding: utf-8 -*- """ 姓名区域销售区域 张三湖南100华中 李四湖北50华中 小明河北80华北 小张上海58华东 小宋吉林70东北 小国四川90西北 """ from pyecharts.charts import Bar import xlrd dataxlrd.open_workbook(11.xlsx) tabledata…...

html是建网站导航栏怎么做/已备案域名购买平台

小编的本本前段时间经常连接不上网络&#xff0c;后来小编打开了远程桌面服务&#xff0c;然后让朋友通过远程操作来帮我看看是不是哪里出现了问题。最后经过小编朋友高超的电脑技术&#xff0c;小编的电脑终于可以连上网络了。那么今天小编就来教你们怎么打开远程桌面服务。远…...

网站短信通知/如何推广

Windows下搭建React Native Android开发环境 下面用到的一些安装包请连接下面的百度云盘&#xff0c;如果失去链接留言我会发给你。 http://pan.baidu.com/s/1pLjABvt 如果你已经有的环境可以略过。 1.安装JDK Java官网上下载安装即可。 java配环境变量。 注意&#x…...

建设银行网站会员注销/自媒体培训学校

2007年9月1日 来到了上海&#xff0c;开始了博客园新的发展征途&#xff01; 在这一年快乐的征途中&#xff0c;有太多收获&#xff0c;而有一个收获让其他收获黯然失色。 从一个人到一个团队&#xff0c;这一年征途最激动人心的收获&#xff01; 转载于:https://www.cnblogs.c…...

个人网站效果/seo优化方案模板

JSON 语法是 JavaScript 语法的子集。 JSON 语法规则 JSON 语法是 JavaScript 对象表示语法的子集。 数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组JSON 名称/值对 JSON 数据的书写格式是&#xff1a;名称/值对。 名称/值对包括字段名称&#xff08;在双引…...