科技平台网站建设/在哪里打广告效果最好

科技平台网站建设,在哪里打广告效果最好,徐州手机网站定制公司哪家好,银行crm系统1.插入排序 插入排序的主要思想是额外申请一个空间cur,让cur一开始等于数组的第1号位置,设置i1,让i-1的元素与其比较,如果arr[i-1]>arr[i],就让arr[i1] arr[i],当进行到最后一次对比结束,i-1,再让arr[…

1.插入排序

插入排序的主要思想是额外申请一个空间cur,让cur一开始等于数组的第1号位置,设置i=1,让i-1的元素与其比较,如果arr[i-1]>arr[i],就让arr[i+1] = arr[i],当进行到最后一次对比结束,i=-1,再让arr[i+1] = cur。

​
private static void insertsort(int[] arr) {for (int i = 1; i < arr.length; i++) {int cur = arr[i];int j = i-1;for ( ;j>=0; j--) {if(cur>arr[j]){arr[j+1] = arr[j];}else{break;}}arr[j+1] = cur;}}​

排序算法的特点是序列越有序,时间效率越高,下面的希尔排序也体现出来。

时间复杂度:O(n^2)

空间复杂度:O(1)

是一种稳定的排序算法。

2.希尔排序

希尔排序的思想是设置一个常量gap,将数组每个相距gap距离的两个数进行分组,然后组内进行排序,每进行一次gap排序后,将gap/2,直到gap为1,排序完成。

    private static void shellsort(int[] arr) {int gep = arr.length;while(gep>1){gep/=2;shell(arr,gep);}}private static void shell(int[] arr, int gep) {for(int i = gep;i< arr.length;i++){int cur = arr[i];int j = i-gep;for(;j>=0;j-=gep){if(cur<arr[j]){arr[j+gep] = arr[j];}else{break;}}arr[j+gep] = cur;}}

这里的希尔排序是先拿出gap间距,进行直接插入排序,所以shell方法的实现和插入排序相似。

希尔排序是对插入排序的优化,当gap>1时,都是对序列有序化,直到gap=1时,数组已经趋于有序,就会排序很快,对于整体来说,就有一个优化的效果。

希尔排序的时间复杂度不好计算,因为每次数组长度不确定,gap的取值不确定。

希尔排序的稳定性:不稳定。                                                                           

3.选择排序

选择排序非常好理解,类似于打擂台,取出一个元素,将它设置为擂主,依次取后面的元素进行比较,如果小于擂主,就进行交换,如果大于,就继续遍历,直到遍历结束。

private static void selectsort(int [] arr) {for(int i= 0;i< arr.length;i++){for (int j = i+1; j < arr.length; j++) {if(arr[i]>arr[j]){int tem = arr[i];arr[i] = arr[j];arr[j] = tem;}}}}

选择排序非常好理解,但效率不是特别高,实际很少使用。

时间复杂度:O(n^2)

空间复杂度:O(1)

不稳定。

4.堆排序

堆排序是基于堆这种数据结构实现的,首先要将数组进行建大堆操作,设置bound记录末尾的位置,然后将数组的头和bound位置元素交换,此时堆中最大的元素在数组末尾,bound--,此时[0,bound]位置就是待排序位置,在进行向下调整,重复过程。

private static void heapsort(int[] arr) {//建堆creatheap(arr);int bound = arr.length-1;for (int i = 0; i < arr.length; i++) {int tem = arr[0];arr[0] = arr[bound];arr[bound] = tem;bound--;shifsort(arr,0,bound);}}private static void shifsort(int[] arr, int index, int bound) {int parent = index;int child = 2*parent + 1;while(child<bound){if(child+1<bound&&arr[child+1]>arr[child]){child+=1;}if(arr[child]>arr[parent]){int tem = arr[child];arr[child] = arr[parent];arr[parent] = tem;}else{break;}parent = child;child = 2*parent + 1;}}private static void creatheap(int[] arr) {for(int i = (arr.length-1-1)/2;i>=0;i--){shifsort(arr,i,arr.length);}}

升序要进行建大堆,降序则建小堆。

堆排序使用堆来调整数据,效率就快很多。

时间复杂度:O(n*logn)

空间复杂度:O(1)

稳定性:不稳定。

5.冒泡排序

冒泡排序非常好理解,我们取数组最后一个元素,依次与前面的数对比。

 private static void pooubsort(int[] arr) {for (int i = 0; i < arr.length; i++) {for (int j = arr.length-1; j > 0 ; j--) {if(arr[j-1] > arr[j]){int tem = arr[j-1];arr[j-1] = arr[j];arr[j] = tem;}}}}

时间复杂度:O(n^2)

空间复杂度:O(1)

稳定性:稳定。

6.快速排序

快速排序是一种非常重要的排序,这里提供Hoare法和挖坑法,Hoare法的思想是取数组最左/右边的值,将它设为基准值,先从右边的第一个值开始,找到比基准值小的值,停下,开始从最左边开始找  比基准值大的值,也停下,交换两个数,当left和right重合,交换基准值和两下标重合位置的值。此时就完成了一次寻找。接下来就是对区间[left,pos-1]和[pos+1,right]分别进行上述调整。因此快排要运用到递归。

//快速排序Hoare法private static void quicksort1(int[] arr) {quick(arr,0,arr.length-1);}private static void quick(int[] arr, int left, int right) {if(left>=right){return;}int pos = parttion(arr,left,right);quick(arr,left,pos-1);quick(arr, pos+1, right);}private static int parttion(int[] arr, int left, int right) {int k = arr[left];int i = left;while(left<right){while(left<right&&arr[right]>=k){right--;}while(left<right&&arr[left]<=k){k++;}sweap(arr,left,right);}sweap(arr,left,i);return left;}private static void sweap(int[] arr, int left, int right) {int tem = arr[left];arr[left] = arr[right];arr[right] = tem;}

挖坑法:挖坑法是先将第一个数据放到一个临时变量,形成一个坑位,从最右边开始找比基准值小的数,让它进入坑位,形成新的坑位,再从左边开始找比基准值大的数,进坑。

private static void quicksort2(int[] arr) {quick1(arr,0,arr.length-1);}private static void quick1( int []arr,int left,int right) {if(left>=right){return;}int pos = parttion1(arr,left,right);quick1(arr,left,pos-1);quick1(arr,pos+1,right);}private static int parttion1(int[] arr, int left, int right) {int key = arr[left];while(left<right){while(left<right&&arr[right]>=key){right--;}arr[left] = arr[right];while(left<right&&arr[left]<=key){left++;}arr[right] = arr[left];}arr[left] = key;return left;}

时间复杂度:O(n*logn)

空间复杂度:O(logn)

稳定性:不稳定

7.归并排序

归并排序也是通过递归(分治法)进行排序,通过将数组分组,使子序列有序,然后让子序列合并。

 private static void mergesort(int[] arr) {mergesortfunc(arr,0,arr.length-1);}private static void mergesortfunc(int [] arr,int left,int right) {if(left>=right){return;}int mid = (left+right)/2;mergesortfunc(arr,left,mid);mergesortfunc(arr,mid+1,right);merger(arr,left,mid,right);}private static void merger(int[] arr, int left, int mid, int right) {int s1 = left;int s2 = mid+1;int [] newarry = new int [right-left+1];int k = 0;while(s1<=mid&&s2<=right){if(arr[s1]>=arr[s2]){newarry[k] = arr[s2];k++;s2++;} else if (arr[s2]>arr[s1]) {newarry[k] = arr[s1];k++;s1++;}}while(s1<=mid){newarry[k++] = arr[s1++];}while(s2<=right){newarry[k++] = arr[s2++];}for (int i = 0; i < newarry.length; i++) {arr[i+left] = newarry[i];}}

归并排序的缺点在于空间复杂度为O(N),归并排序的思考更多在于磁盘外的排序,因为内存无法存储这么多数据,所以要进行外部排序,归并排序是最常用的外部排序。

时间复杂度:O(n*logn)

空间复杂度:O(N)

稳定性:稳定

8.快速排序的非递归实现

快排:首先要有一个栈,设置一个内置类,类中有left,right,将初始的范围[0,arr.length-1]入栈。

 public Range(int right, int left) {this.right = right;this.left = left;}}private static void quicksortbyLoop(int[] arr) {Stack<Range> stack = new Stack<>();stack.push(new Range(0,arr.length-1));while(!stack.isEmpty()){Range range = stack.pop();while(range.left>=range.right){continue;}int pos = parttion(arr,range.left, range.right);stack.push(new Range(range.left,pos-1));stack.push(new Range(pos+1,range.right));}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/74430.shtml

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

相关文章

LiteIDE中配置golang编译生成无CMD窗口EXE的步骤

LiteIDE中配置golang编译生成无CMD窗口EXE的步骤 一、环境配置1、设置GOROOT‌2、配置GOPATH‌ 二、项目编译参数设置1、新建/打开项目‌2、修改编译配置‌3、其他优化选项&#xff08;可选&#xff09;‌ 三、构建与验证1、编译生成EXE‌2、验证无窗口效果‌ 四、注意事项 一、…

Maya基本操作

基本操作 按住ALT键&#xff0c;左键旋转视角&#xff0c;中键平移视角&#xff0c;右键放大缩小视角。 按空格键切换4格视图。 导入FBX格式文件后&#xff0c;无贴图显示。 按6键开启。着色纹理显示 坐标轴相关 修改菜单-左键最上面的虚线。固定修改选项窗口。 选中物体…

Windows打开ftp局域网共享

前提是windows已经设置好开机账号密码了&#xff0c;否则教程不适用 第一先打开电脑ftp共享配置 点击保存即可 2.设置要共享到其他电脑的文件路径&#xff08;如果你要共享整个盘你就设置整个盘&#xff0c;如果是共享盘中某文件就设置某文件&#xff0c;这里是某文件&#x…

overleaf中会议参考文献使用什么标签:inproceedings

overleaf中会议参考文献使用什么标签 会议论文在LaTeX文献条目中应使用 @inproceedings 标签,而非 @article。根据你提供的内容,修正后的格式如下: @inproceedings{asai2023self, author = {Asai, Akari and Wu, Zeqiu and Wang, Yizhong and Sil, Avirup and Hajishirzi,…

一文详解redis

redis 5种数据类型 string 字符串是 Redis 里最基础的数据类型&#xff0c;一个键对应一个值。 设置值 SET key value例如&#xff1a; SET name "John"获取值 GET key例如&#xff1a; GET namelist 列表是简单的字符串列表&#xff0c;按插入顺序排序。 在列…

第16章:基于CNN和Transformer对心脏左心室的实验分析及改进策略

目录 1. 项目需求 2. 网络选择 2.1 UNet模块 2.2 TransUnet 2.2.1 SE模块 2.2.2 CBAM 2.3 关键代码 3 对比试验 3.1 unet 3.2 transformerSE 3.3 transformerCBAM 4. 结果分析 5. 推理 6. 下载 1. 项目需求 本文需要做的工作是基于CNN和Transformer的心脏左心室…

【AI】知识蒸馏-简单易懂版

1 缘起 最近要准备升级材料&#xff0c;里面有一骨碌是介绍LLM相关技术的&#xff0c;知识蒸馏就是其中一个点&#xff0c; 不过&#xff0c;只分享了蒸馏过程&#xff0c;没有讲述来龙去脉&#xff0c;比如没有讲解Softmax为什么引入T、损失函数为什么使用KL散度&#xff0c;…

2024年数维杯数学建模B题生物质和煤共热解问题的研究解题全过程论文及程序

2024年数维杯数学建模 B题 生物质和煤共热解问题的研究 原题再现&#xff1a; 随着全球能源需求的不断增长和对可再生能源的追求&#xff0c;生物质和煤共热解作为一种潜在的能源转化技术备受关注。生物质是指可再生能源&#xff0c;源自植物和动物的有机物质&#xff0c;而煤…

Spring相关API

1是相对路径 2 是绝对路径 3 在注解时使用

Netty源码—客户端接入流程

1.关于Netty客户端连接接入问题整理 一.Netty是在哪里检测有新连接接入的&#xff1f; 答&#xff1a;boss线程第一个过程轮询出ACCEPT事件&#xff0c;然后boss线程第二个过程通过JDK底层Channel的accept()方法创建一条连接。 二.新连接是怎样注册到NioEventLoop线程的&#x…

领域驱动设计(DDD)实践入门

文章目录 1.认识领域驱动设计1.1 简介1.2 发展历史1.3 DDD 的兴起 2.从一个简单案例2.1 转账需求2.2 设计的问题2.3 违反的设计原则 3.使用 DDD 进行重构抽象数据存储层抽象第三方服务抽象中间件封装业务逻辑重构后的架构 4.小结参考文献 1.认识领域驱动设计 1.1 简介 领域驱…

nuxt3网站文章分享微信 ,QQ功能

1.安装 npm install qrcode --save-dev 2.组件使用 <div class"share"><div style"line-height: 69px; color: #fff;width: 100px;"><p style"text-align: center;">分享:</p></div><div click"shareToMi…

VMWare Ubuntu 详细安装教程

VMWare Ubuntu 详细安装教程 一、下载安装VMware二、下载 Ubuntu 镜像文件三、安装 Ubuntu四、开启虚拟机 一、下载安装VMware 官网下载地址https://www.vmware.com/products/desktop-hypervisor/workstation-and-fusion知乎大佬的博客原文&#xff0c;含下载地址https://zhua…

SCI英文论文Accepted后的第一步——Rights and Access

SCI英文论文Accepted后的第一步——Rights and Access 目录 SCI英文论文Accepted后的第一步——Rights and AccessBased on information provided the embargo period/end date is 24 months. 因为选择闭源**Rights and Access(版权与访问权限)**环节是关键第一步,具体操作流…

Qt文件管理系统

引言 今天我将使用model/view模型视图框架来完成一个简单的Qt文件管理系统&#xff0c;主要使用到了QTreeView、QTabelView视图和QFileSystemModel文件系统模型。 界面设计 使用Qt创建项目并勾选创建ui文件&#xff0c;打开ui文件&#xff0c;使用Tree View、Table View、St…

《可爱风格 2048 游戏项目:HTML 实现全解析》

一、引言 在如今的数字化时代&#xff0c;小游戏以其简单易上手、趣味性强的特点深受大家喜爱。2048 游戏作为一款经典的数字合并游戏&#xff0c;拥有庞大的玩家群体。本文将详细介绍一个用单文件 HTML 实现的可爱风格 2048 游戏项目&#xff0c;它不仅具备传统 2048 游戏的基…

C语言 —— 此去经年梦浪荡魂音 - 深入理解指针(卷四)

目录 1. 回调函数 2. qsort函数 2.1 使用qsort函数排序整型数据 2.2 使用qsort排序结构数据 2.3 使用冒泡排序模拟实现qsort函数 1. 回调函数 回调函数其实就是一个通过函数指针调用的函数&#xff0c;如果你把函数的指针作为参数传递给另一个函数&#xff0c;当这个指针被…

Shiro框架漏洞攻略

漏洞原理&#xff1a;服务端在接收到⼀个Cookie时&#xff0c;会按照如下步骤进⾏解析处理&#xff1a;1.检索RememberMe Cookie的值 2.进⾏Base64解码 3.进⾏AES解码 4.进⾏反序列化操作 在第4步中的调⽤反序列化时未进⾏任何过滤&#xff0c;进⽽可以导致出发远程代码执⾏漏…

Ceph集群2025(Squid版)导出高可用NFS集群(下集 )

本次主要对接K8S和传统的一样而已,比较简单&#xff0c;不再过多讲解 官网 https://github.com/kubernetes-csi/csi-driver-nfs/tree/master/chartshelm repo add csi-driver-nfs https://raw.githubusercontent.com/kubernetes-csi/csi-driver-nfs/master/charts helm pull c…

Off-Road-Freespace-Detection配置pytorch2.0.0

一、概述 在github上进行开源代码搜索&#xff0c;发现了Off-Road-Freespace-Detection&#xff08;链接如下所示&#xff09;。这是对越野环境可通行区域的检测&#xff0c;在经过测试之后&#xff0c;发现对自己有益。 GitHub - chaytonmin/Off-Road-Freespace-Detection: O…