安徽省城乡建设网站学校网站建设需求文档

bicheng/2026/1/22 12:24:06/文章来源:
安徽省城乡建设网站,学校网站建设需求文档,360极速怎么屏蔽网站,网站交易平台一 选择排序 原理#xff1a;选择排序很简单#xff0c;他的步骤如下#xff1a; 从左至右遍历#xff0c;找到最小(大)的元素#xff0c;然后与第一个元素交换。从剩余未排序元素中继续寻找最小#xff08;大#xff09;元素#xff0c;然后与第二个元素进行交换。以此…一 选择排序 原理选择排序很简单他的步骤如下 从左至右遍历找到最小(大)的元素然后与第一个元素交换。从剩余未排序元素中继续寻找最小大元素然后与第二个元素进行交换。以此类推直到所有元素均排序完毕。 之所以称之为选择排序是因为每一次遍历未排序的序列我们总是从中选择出最小的元素。下面是选择排序的动画演示   public class Sort {//选择排序public static void SelectionSort(int[] array) {int n array.length;for (int i 0; i n; i) {int min i; // 从第i1个元素开始找最小值for (int j i 1; j n; j) {if (array[min] array[j])min j;}Swap(array, i, min);}}//插入排序public static void insertionSort(int[] array){int n array.length;for (int i 1; i n; i) {for (int j i; j 0; j--) {if (array[j] array[j-1])Swap(array, j, j-1);elsebreak;} }}//冒泡排序public static void bubbleSort(int[] array){int n array.length;for (int i 0; i n; i) {for (int j n-1; j i; j--) {if (array[j] array[j-1])Swap(array, j, j-1);} }}//希尔排序public static void shellSort(int[] arr){int Narr.length;int h1;while(hN/3){h3*h1;}while (h1) {for(int i h; i N; i) {for (int j i; jh(arr[j]arr[j-h]); j-h) {swap(arr, j, j-h); }}hh/3;}}private static void Swap(int[] array, int i, int min) {int temp array[i];array[i] array[min];array[min] temp;}private static void printArr(int[] array){for (int i 0; i array.length; i) {System.out.print(array[i] );}System.out.println();}public static void main(String[] args) {int[] array new int[] { 1, 3, 1, 4, 2, 4, 2, 3, 2, 4, 7, 6, 6, 7, 5,5, 7, 7 };System.out.println(Before Sort:);printArr(array);//SelectionSort(array);//insertionSort(array);bubbleSort(array);System.out.println(After Sort:);printArr(array);} } View Code   下图分析了选择排序中每一次排序的过程您可以对照图中右边的柱状图来看。 (array);   分析   选择排序的在各种初始条件下的排序效果如下 选择排序需要花费 (N – 1) (N – 2) … 1 0  N(N- 1) / 2 ~ N2/2次比较 和 N-1次交换操作。对初始数据不敏感不管初始的数据有没有排好序都需要经历N2/2次比较这对于一些原本排好序或者近似排好序的序列来说并不具有优势。在最好的情况下即所有的排好序需要0次交换最差的情况倒序需要N-1次交换。数据交换的次数较少如果某个元素位于正确的最终位置上则它不会被移动。在最差情况下也只需要进行N-1次数据交换在所有的完全依靠交换去移动元素的排序方法中选择排序属于比较好的一种。二 插入排序 原理   插入排序也是一种比较直观的排序方式。可以以我们平常打扑克牌为例来说明假设我们那在手上的牌都是排好序的那么插入排序可以理解为我们每一次将摸到的牌和手中的牌从左到右依次进行对比如果找到合适的位置则直接插入。具体的步骤为 从第一个元素开始该元素可以认为已经被排序取出下一个元素在已经排序的元素序列中从后向前扫描如果该元素小于前面的元素则依次与前面元素进行比较如果小于则交换直到找到大于该元素的就则停止如果该元素大于前面的元素已排序则重复步骤2重复步骤2~4 直到所有元素都排好序 。  下面是插入排序的动画演示 分析   插入排序的在各种初始条件下的排序效果如下   1. 插入排序平均需要N2/4次比较和N2/4 次交换。在最坏的情况下需要N2/2 次比较和交换在最好的情况下只需要N-1次比较和0次交换。   先考虑最坏情况那就是所有的元素逆序排列那么第i个元素需要与前面的i-1个元素进行i-1次比较和交换所有的加起来大概等于N(N- 1) / 2 ~ N2 / 2在数组随机排列的情况下只需要和前面一半的元素进行比较和交换所以平均需要N2/4次比较和N2/4 次交换。   在最好的情况下所有元素都排好序只需要从第二个元素开始都和前面的元素比较一次即可不需要交换所以为N-1次比较和0次交换。   2. 插入排序中元素交换的次数等于序列中逆序元素的对数。元素比较的次数最少为元素逆序元素的对数最多为元素逆序的对数 加上数组的个数减1。   3.总体来说插入排序对于部分有序序列以及元素个数比较小的序列是一种比较有效的方式。   如上图中序列AEELMOTRXPS中逆序的对数为T-RT-PT-SR-PX-S 6对。典型的部分有序队列的特征有 数组中每个元素离最终排好序后的位置不太远小的未排序的数组添加到大的已排好序的数组后面数组中只有个别元素未排好序  对于部分有序数组插入排序是比较有效的。当数组中逆元素的对数越低插入排序要比其他排序方法要高效的多。   选择排序和插入排序的比较   上图展示了插入排序和选择排序的动画效果。图中灰色的柱子是不用动的黑色的是需要参与到比较中的红色的是参与交换的。图中可以看出插入排序不会动右边的元素选择排序不会动左边的元素由于插入排序涉及到的未触及的元素要比插入的元素要少涉及到的比较操作平均要比选择排序少一半。 3.冒泡排序   冒泡排序也被称为下沉排序是一个简单的排序算法通过多次重复比较每对相邻的元素并按规定的顺序交换他们最终把数列进行排好序。一直重复下去直到结束。该算法得名于较小元素“气泡”会“浮到”列表顶部。由于只使用了比较操作所以这是一个比较排序。冒泡排序算法的运作如下 比较相邻的元素。如果第一个比第二个大就交换他们两个。对每一对相邻元素作同样的工作从开始第一对到结尾的最后一对。这步做完后最后的元素会是最大的数。针对所有的元素重复以上的步骤除了最后一个。持续每次对越来越少的元素重复上面的步骤直到没有任何一对数字需要比较。  时间复杂度   若文件的初始状态是正序的一趟扫描即可完成排序。所需的关键字比较次数 C和记录移动次数 M均达到最小值 Cminn-1Mmin0。所以冒泡排序最好的时间复杂度为 O(n)。        若初始文件是反序的需要进行 n-1趟排序。每趟排序要进行 n-i次关键字的比较(1≤i≤n-1)且每次比较都必须移动记录三次来达到交换记录位置。在这种情况下比较和移动次数均达到最大值   冒泡排序的最坏时间复杂度为O(n*n)综上因此冒泡排序总的平均时间复杂度为O(n*n)。   算法稳定性   冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较交换也发生在这两个元素之间。所以如果两个元素相等我想你是不会再无聊地把他们俩交换一下的如果两个相等的元素没有相邻那么即使通过前面的两两交换把两个相邻起来这时候也不会交换所以相同元素的前后顺序并没有改变所以冒泡排序是一种稳定排序算法。     希尔排序   原理希尔排序也称之为递减增量排序它是对插入排序的改进。在插入排序中我们知道插入排序对于近似已排好序的序列来说效率很高可以达到线性排序的效率。但是插入排序效率也是比较低的他 一次只能将数据向前移一位。比如如果一个长度为N的序列最小的元素如果恰巧在末尾那么使用插入排序仍需一步一步的向前移动和比较要N-1次比较和交 换。希尔排序通过将待比较的元素划分为几个区域来提升插入排序的效率。这样可以让元素可以一次性的朝最终位置迈进一大步然后算法再取越来越小的步长进行排序最后一步就是步长为1的普通的插入排序的但是这个时候整个序列已经是近似排好序的所以效率高。   如下图我们对下面数组进行 排序的时候首先以4为步长这是元素分为了LMPTEHSSELOXAELR几个序列我们对这几个独立的序列 进行插入排序排序完成之后我们减小步长继续排序最后直到步长为1步长为1即为一般的插入排序他保证了元素一定会被排序。   希尔排序的增量递减算法可以随意指定可以以N/2递减只要保证最后的步长为1即可。 实现 public static void shellSort(int[] arr){int Narr.length;int h1;while(hN/3){h3*h1;}while (h1) {for(int i h; i N; i) {for (int j i; jh; j-h) {if(arr[j]arr[j-h]){swap(arr, j, j-h);}else{break;}}}hh/3;} }可以看到希尔排序的实现是在插入排序的基础上改进的插入排序的步长为1每一次递减1希尔排序的步长为我们定义的h然后每一次和前面的-h位置上的元素进行比较。算法中我们首先获取小于N/3 的最大的步长然后逐步长递减至步长为1的一般的插入排序。   下面是希尔排序在各种情况下的排序动画 分析 1. 希尔排序的关键在于步长递减序列的确定任何递减至1步长的序列都可以目前已知的比较好的序列有 Shell’s 序列: N/2 , N/4 , …, 1 (重复除以2);Hibbard’s 序列: 1, 3, 7, …, 2k – 1 ;Knuth’s 序列: 1, 4, 13, …, (3k – 1) / 2 ;该序列是本文代码中使用的序列。已知最好的序列是 Sedgewick’s (Knuth的学生Algorithems的作者)的序列: 1, 5, 19, 41, 109, ….该序列由下面两个表达式交互获得: 1, 19, 109, 505, 2161,….., 9(4k – 2k) 1, k 0, 1, 2, 3,…5, 41, 209, 929, 3905,…..2k2 (2k2 – 3 ) 1, k 0, 1, 2, 3, …  “比较在希尔排序中是最主要的操作而不是交换。”用这样步长的希尔排序比插入排序和堆排序都要快甚至在小数组中比快速排序还快但是在涉及大量数据时希尔排序还是比快速排序慢。   2. 希尔排序的分析比较复杂使用Hibbard’s 递减步长序列的时间复杂度为O(N3/2)平均时间复杂度大约为O(N5/4) ,具体的复杂度目前仍存在争议。   3. 实验表明对于中型的序列( 万)希尔排序的时间复杂度接近最快的排序算法的时间复杂度nlogn。   最后总结一下本文介绍的三种排序算法的最好最坏和平均时间复杂度。 名称最好平均最坏内存占用稳定排序插入排序nn2n21是选择排序n2n2n21否希尔排序nnlog2n 或 n3/2依赖于增量递减序列目前最好的是 nlog2n1否转载于:https://www.cnblogs.com/wxgblogs/p/5499569.html

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

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

相关文章

天圆地方建筑网站企业网站四种类型

先推广一下QQ群:61618925。欢迎各位爱好编程的朋友加入。 一、程序界面 二、关键部分代码: 1.数据结构定义 #define MBRSIZE 512 #define BOOTRECORDSIZE 440 #define DISKSIGNEDSIZE 4 #define RESERVESIZE 2 #define DPTNUMBER 4 #define DPTSIZE 16 #…

临沂网站建设昂牛网络网站建设与管理好处

上链接:【深基16.例1】淘汰赛 - 洛谷https://www.luogu.com.cn/problem/P4715 上题干: 题目描述 有 2^n(n≤7)个国家参加世界杯决赛圈且进入淘汰赛环节。已经知道各个国家的能力值,且都不相等。能力值高的国家和能力值…

优质聊城做网站公司网站流量 次

目录 一,创建登录ui界面类 LoginWidget 二,添加图片资源 三,通过样式的方法将图片设置成圆圈的背景 四,新建登录后的ui界面 MWindow 简陋的就可以,因为只为了学习,可以自己补充 五,新建三个嵌套ui界面类,ChatWidget聊天界面 FriendWiidget好友界面 CollectW…

服装购物商城网站建设wordpress 收费主题下载

图源:文心一言 听课笔记简单整理,供小伙伴们参考,包含以下内容“🐋3.11 引用类型、🐋3.14 内联函数、🐋3.15 默认参数值、🐋3.16 函数重载、🐋3.17 C系统函数”~🥝&…

网站网址怎么写网站域名如何查询

Statement对象和查询结果集 Statement对象相关的方法 Connection接口中获取数据库操作对象Statement对象的方法 方法名功能Statement createStatement()创建Statement对象 Statement对象执行增删改查的SQL语句(不含占位符"?")的方法,JDBC中的SQL语句不需要提供分…

网站内容建设的原则是什么意思酒店找人做网站

WebRTC是音视频直播中最常用的一个框架,在使用的过程中,我们就需要实现一个服务器端。本文以nodejs实现一个服务器为例,讲述一下在centos下如何用nodejs实现一个简单的web服务器。 一、安装nodejs 在linux环境下安装nodejs有多重方式&#x…

深圳市鸿运通网站建设郑州鹏之信网站建设

之前因为工作中用的都是SVN版本控制工具,没接触过git和github,现在开始深入自学Django框架技术后,看到官网推荐使用git,然后这两天网上查阅了很多文章教程,学到入门操作需要学习的点,太多的知识点要后面慢慢…

郑州网站推广营销给个网站能看的

拿到手第一反应还是暴力,直接从低位到高位把数一个个取出来,然后乘以每一位的权重,构成一个新的反转后的整数 res 返回,代码如下 package mainimport ("fmt""math" )func reverse(x int) int {if x > -10…

学校做网站一般多少钱瑞幸网络营销策划

机器学习常用距离度量方法 前言一、前期准备二、距离度量方法1. 欧氏距离2.曼哈顿距离3.切比雪夫距离4. 闵可夫斯基距离 总结 前言 机器学习中往往通过度量来研究不同样本或数据集之间的差异性,合适的度量方式可以显著提高算法的准确率,因此在接下来的内…

创业服务网网站建设方案项目书网站开发过程中的方法

近年来,随着城市化进程的加速推进,智慧公厕成为人民生活质量提升的重要组成部分。作为一个富有创新和科技感的解决方案,智慧公厕不仅满足了人们对公共环境的要求,还提供了一系列便利的服务,让人们的生活更加舒适、便捷…

常州公司做网站创建一个网站的技术

摘要: 2023-12-01 AIGC-自动生成ppt-记录 自动生成ppt: BoardMix boardmix 一键生成ppt boardmix是一款基于云的ai设计软件,允许创建用于各种目的的自定义演示文稿、ai绘画,ai生成思维导图等。以下是它的一些功能: 可定制的模板 - 它有一个…

互联网网站建设月总结北京设计企业网站

Trace 是Rabbitmq用于记录每一次发送的消息,方便使用Rabbitmq的开发者调试、排错。 1、启动Tracing插件 在RabbitMQ中默认是关闭的,需手动开启。此处rabbitMQ是使用docker部署的 ## 进入rabbitMq中 docker exec -it rabbitmq1 bash ## 启动日志插件 r…

网站如何做支付系统网站流量少怎么办

1 AKConv原理 AKConv: Convolutional Kernel with Arbitrary Sampled Shapes andArbitrary Number of Parameters 摘要:基于卷积运算的神经网络在深度学习领域取得了令人瞩目的成果,但标准卷积运算存在两个固有的缺陷。一方面,卷积运算仅限于局部窗口,无法捕获其他位置的…

淘宝刷网站建设去除wordpress后台登录logo

在 web 应用程序开发中,数据的增、删、改、查(CRUD)操作是最基本的功能之一。Django 作为一个高效的 web 框架,提供了强大的 ORM(对象关系映射)功能,使得开发者可以通过 Python 代码直接操作数据库,而不需要编写繁琐的 SQL 语句。这种简化和抽象帮助开发者快速构建、测…

长春做网站推广东莞网站建设推广

很明了的一个常用参数图标: 更像细的一个参数说明: 由于文件读写时都有可能产生IOError,一旦出错,后面的f.close()就不会调用。所以,为了保证无论是否出错都能正确地关闭文件,我们可以使用try ... finally来…

如何一键建淘宝客网站丽水高端网站建设

上一章的内容 练习!上一章表的内容!!!熟能生巧 先重新创建一个数据库 命令create database supermarket; 然后查看数据库、再切换到当前数据库。 查看数据库 : show databases; 切换到当前数据库: use supermarket;创建员工…

济南好的网站建设公司免费seo网站

文章目录 0 简介1 课题背景🚩 2 口罩佩戴算法实现2.1 YOLO 模型概览2.2 YOLOv32.3 YOLO 口罩佩戴检测实现数据集 2.4 实现代码2.5 检测效果 3 口罩佩戴检测算法评价指标3.1 准确率(Accuracy)3.2 精确率(Precision)和召回率(Recall)3.3 平均精…

做模板网站的利与弊做网站的哪个好

网上各种标为2013年,实际上都是2012年或者更早的,下面的才是真正的2013年5月5日考试的卷子。 答题说明: 1.答题时间90分钟,请注意把握时间; 2.试题分为四个部分:单项选择题(10题,20分…

网站排名优化培训电话网页创意设计

最近,德迅云安全遇到不少网站用户遇到攻击问题,来咨询安全解决方案。目前在所有的网络攻击方式中,DDoS是最常见,也是最高频的攻击方式之一。不少用户网站上线后,经常会遭受到攻击的困扰。有些攻击持续时间比较短影响较…