-
2016-03-14 10:20:15
用分治法实现快速排序问题
1.实验目的
(1) 掌握分治策略的基本思想及求解问题的主要步骤;
(2) 应用分治策略的基本思想设计快速排序算法。
2.实验环境
Windows操作系统,VC++ 6.0。
3.实验内容
有n个无序的数值数据,现要求将其排列成一个有序的序列。
4.实验步骤
(1) 介绍算法的主要设计思想;
(2) 自定义input函数,从文件中读入必要的数据;
(3) 自定义algorithm函数,得到问题的解(重点步骤);
(4) 自定义output函数,输出问题的解到外部文件;
(5) 自定义main函数,初始化相关信息并调用上述三个函数完成实验任务;
(6) 设计测试用例进行测试,验证程序是否正确。
#include<stdio.h> #include<stdlib.h> int Partition(int number[], int left, int right); int input(int number[]) { FILE *fp; int i = -1; if ((fp = fopen("c:\\number.txt","r")) == NULL) { printf("file open error!\n"); exit(0); } while (!feof(fp)) { fscanf(fp,"%d ", &number[++i]); } fclose(fp); return i; } void QuickSort(int number[],int left,int right) { if (right <= left) { return; } int pivot = (left + right) / 2; //选择轴值 //不借助 第三个变量实现两个变量之间的值交换 //将轴值放入到数组末端 number[pivot] = number[pivot] + number[right]; number[right] = number[pivot] - number[right]; number[pivot] = number[pivot] - number[right]; pivot = Partition(number,left, right); //分割后轴值到达正确位置 QuickSort(number,left, pivot - 1); //对轴值左边的子序列进行递归快速排序 QuickSort(number,pivot + 1, right); //对轴值右边的子序列进行递归快速排序 } int Partition(int number[],int left,int right) { int l = left; int r = right; int temp = number[r];//将轴值放入到临时变量中 while (l!=r) { //l指针向右移动,越过那些小于轴值得记录,直到找到一个大于轴值得记录 while (number[l]<=temp&&l<r) { l++; } if (l < r) { number[r] = number[l]; r--; //r向左移动一步 } while (number[r] >= temp && r>l) { r--; } if (r>l) { number[l] = number[r]; l++; //l指针向右移动一步 } } number[l] = temp; //把轴值回填到分界位置l上 return l; } void output(int number[],int right) { FILE *fp; int i = 0; if ((fp = fopen("c://num.txt", "w")) == NULL) { printf("file open error!"); exit(0); } while (i<=right) { fprintf(fp, "%d ", number[i]); i++; } fclose(fp); } int main() { int number[100]; int left = 0,right=input(number),i; QuickSort(number, left, right); output(number, right); return 0; }
更多相关内容 -
netware 解决用户快速切换问题
2010-03-01 15:57:26netware 解决用户快速切换问题 -
快速带你理解什么是跨域并解决跨域问题
2020-08-29 16:20:57在前后端分离的模式下,前后端的域名是不一致的,此时就会发生跨域访问问题。在请求的过程中我们要想回去数据一般都是post/get请求,所以…跨域问题出现 跨域问题来源于JavaScript的同源策略,即只有 协议+主机名+...1、什么是跨域?
跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器施加的安全限制。
所谓同源是指,域名,协议,端口均相同,不明白没关系,举个栗子:
http://www.123.com/index.html 调用 http://www.123.com/server.php (非跨域)
http://www.123.com/index.html 调用 http://www.456.com/server.php (主域名不同:123/456,跨域)
http://abc.123.com/index.html 调用 http://def.123.com/server.php (子域名不同:abc/def,跨域)
http://www.123.com:8080/index.html 调用 http://www.123.com:8081/server.php (端口不同:8080/8081,跨域)
http://www.123.com/index.html 调用 https://www.123.com/server.php (协议不同:http/https,跨域)
请注意:localhost和127.0.0.1虽然都指向本机,但也属于跨域。
2、为什么会有跨域?
在前后端分离的模式下,前后端的域名是不一致的,此时就会发生跨域访问问题。在请求的过程中我们要想回去数据一般都是post/get请求,所以…跨域问题出现
跨域问题来源于JavaScript的同源策略,即只有 协议+主机名+端口号(如存在)相同,则允许相互访问。也就是说JavaScript只能访问和操作自己域下的资源,不能访问和操作其他域下的资源。跨域问题是针对JS和ajax的,html本身没有跨域问题,比如a标签、script标签、甚至form标签(可以直接跨域发送数据并接收数据)等
3、解决跨域问题
/** * 实现基本的跨域请求 * @author yyl * */ @Configuration public class CorsConfig { private CorsConfiguration buildConfig() { CorsConfiguration corsConfiguration = new CorsConfiguration(); corsConfiguration.addAllowedOrigin("*"); // 允许任何域名使用 corsConfiguration.addAllowedHeader("*"); // 允许任何头 corsConfiguration.addAllowedMethod("*"); // 允许任何方法(post、get等) return corsConfiguration; } @Bean public CorsFilter corsFilter() { UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); source.registerCorsConfiguration("/**", buildConfig()); // 对接口配置跨域设置 return new CorsFilter(source); } }
Ajax 请求示例:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>跨域请求</title> </head> <script src="js/jquery-1.7.2.js"></script> <script type="text/javascript"> function upd() { $.ajax({ type: "get", data: "a=1", url: "localhost:8080/user/getAllUser", success: function(result) { console.log(result); } }); } </script> <body> <!--获取--> <button id="btn2" onclick="upd()">Get request 获取</button> </body> </html>
参考博客:https://blog.csdn.net/lambert310/article/details/51683775
-
如何快速发现及解决网络环路问题
2022-01-13 09:12:17网络环路问题对企业网络存在很大的威胁,它会造成网络里的广播风暴,耗尽交换资源,造成交换机瘫痪。当网络环路发生时,会出现网络及应用访问缓慢、网络丢包甚至无法正常提供服务等异常。通常在大型的网络中发现网络...网络环路问题对企业网络存在很大的威胁,它会造成网络里的广播风暴,耗尽交换资源,造成交换机瘫痪。当网络环路发生时,会出现网络及应用访问缓慢、网络丢包甚至无法正常提供服务等异常。通常在大型的网络中发现网络环路并定位交换机环路端口是比较困难的,一旦出现网络环路,会导致业务系统无法正常访问,严重的影响了员工的工作,对企业造成难以挽回的经济损失。
网络环路一般分为:物理环路、网络自环、逻辑环路和下游设备自环。
物理环路
如果2台或以上的交换机用网线连接对方,那就形成了一个物理环路。怎么克服物理环路呢?这里可以利用交换机的spanning tree机制,把其中的一根逻辑断开,什么是逻辑断开?虽然还是物理连着,但是不跑流量了,和物理断开没有区别。
设备自环
比如交换机的两个端口,用一个网线连接,就形成了一个自环,这种自环spanning tree也可以破环。但如果网线的一端收、发线连接,另外一端插在交换机端口,这种也是自环,spanning tree无法检测、破环,唯一的办法就是找出有问题的线路并拔掉它。
逻辑环路
在计算机网络里: A路由器想发流量给C, A的路由表显示,B可以到达C, A把流量发给B,B接收到流量,查询自己的路由表,发现到C的最优路径是A,于是把流量又发给A,就这样你来我往,反反复复,直到TTL=0才丢弃罢休,这个就是逻辑环,虽然A与B之间只有一个物理线路,但是由于路由协议的问题,发生了环路。
综上所述:交换机因为其flooding转发机制,无法容忍任何环路的存在,所以需要借助spanning tree来进行防环路保护机制。但spanning tree无法防由于网线、网卡故障而造成的环路,这时就需要一款能够发现网络环路并快速定位交换机环路端口的解决方案–易网捷终端接入控制系统。
易网捷终端接入控制系统可以实现快速部署,界面简明且功能强大,通过可视化的网络拓扑,实现迅速定位环路端口、网络资产管理、网络准入控制等功能,帮助网络运维人员解决网络接入管理问题,为内部网络畅通保驾护航!
-
C盘空间短时间内快速减小的解决问题
2019-12-24 11:49:55后来上网上查了一下,才发现了问题所在,特此写一篇博客: 原因:系统在自动下载更新文件,但我不需要更新,所以把更新服务关掉并删掉系统更新缓存文件就可以了。 操作: 1.关闭Windows Update服务:win + R,...今天偶然打开C盘,突然发现可用空间还剩不到30G,并且之后发现似乎每隔1分钟就会减小100M,而且磁盘清理、垃圾清理了很多次空间还是在不断减小,以为是中毒了....后来上网上查了一下,才发现了问题所在,特此写一篇博客:
原因:系统在自动下载更新文件,但我不需要更新,所以把更新服务关掉并删掉系统更新缓存文件就可以了。
操作:
1.关闭Windows Update服务:win + R,输入services.msc,进入服务,找到Windows Update
右击,点击属性,把启动类型改为禁用,并停止
2.找到系统更新缓存文件:打开C盘,按照C:\Windows\SoftwareDistribution\Download的路径找,看到一个名字很长的文件夹,右击一下看看他的创建时间和大小,可以看到它就是今天不断占用C盘空间的“罪魁祸首”,占了4G的内存。删掉它即可。
问题解决。
-
快速解决pr2020兼容性问题
2021-01-26 15:54:52快速解决pr2020兼容性问题 出现的问题 打开pr2020时,会出现提示:系统兼容性报告,并且在pr软件的左上角出现如下图所示的提醒: 解决办法 1.首先点击修复,跳转到如何安装NVIDIA驱动程序页面,打开第三条:进入... -
vi编辑时出现E325:ATTENTION(简单易懂,快速解决问题)
2020-07-13 08:31:03要想解决这个问题, 1.找到开头前两行 示例如下: E325: ATTENTION Found a swap file by the name "/.local/share/nvim/swap//%home%dev%xuexi%tool%main.c.swp" (tips:复制标粗体的地方) 2.找出name 后面... -
为什么会出现403 Forbidden错误?三分钟教你快速解决问题!
2020-08-10 18:16:43出现403 Forbidden错误该怎么解决? 403 Forbidden是HTTP协议中的一个状态码(Status Code)。可以简单的理解为没有权限访问此站。该状态表示服务器理解了本次请求但是拒绝执行该任务,该请求不... -
工作的本质是解决问题
2020-03-14 10:30:54不知道你是否会经常产生:感觉在公司技术上得不到提升,想跳槽的想法,但是你会发现一个...当你的成长速度可能会优于公司的成长速度时,你需要静下心来沉淀自己,而不是通过跳槽来解决问题。但是在公司技术严重脱... -
快速排序算法存在的问题及改进
2019-02-28 00:11:37一、存在的问题 当数组长度较小时,不比其他排序算法高效,如插入排序;...1.当划分到较小的子数组时,通常可以使用插入排序替代快速排序 此时可以设定一个快排分区的阈值,当待排数组分区后的长度小于阈值时改... -
Python 解决cmd窗口鼠标点击后挂起不执行问题(禁止快速编辑模式)
2020-10-29 19:52:10问题 用Python开发的无界面程序,执行过程在cmd黑窗口中打印信息时,有时,一不小心鼠标点到了黑窗口里,程序就挂起,不执行了,必须把焦点去除才能恢复执行,很是烦人。一番搜索之后找到个还算简单的解决方案,此处... -
private void buildLoggingEventAndAppend(String localFQCN, Marker marker, Level level, String msg, Object[] params, Throwable t) { if(level.levelStr.equals("ERROR")){ ... } LoggingEvent le = new ...
-
快速解决win10开机密码错误开不了机的问题
2021-07-28 05:37:24快速解决win10开机密码错误开不了机的问题导语:win10开机密码总是显示错误,怎么快速解决这个问题呢?下面是小编为你整理的快速解决win10开机密码错误开不了机的问题,希望对你有帮助!方法/步骤:开机,不用管,让... -
使用小乌龟TortoiseGit快速解决代码冲突问题
2020-10-13 21:56:43最近在做项目时,本地comit完代码后,从远程库拉取代码后,发现出现很多冲突,有点慌不知如何快速解决,一个个改效率太低,小乌龟这个之前看过一点点,但没有在实际项目中用过,这次用小乌龟快速解决了这个问题.小乌龟下载... -
python程序异常崩溃时如何快速分析并解决问题
2019-08-02 15:56:26程序异常崩溃时会提供非常详细的错误信息,掌握正确的分析方法,就可以快速定位问题并解决问题,下面这段代码会引发异常导致程序终止 def func_tet(): func_sum('4', 3) def func_sum(a, b): value = a + b ... -
两步快速解决浏览器上传本地文件失败问题
2021-10-04 23:42:10两步快速解决浏览器上传本地文件失败问题 学校教学平台上传作业总是没法弹出本地目录,经过查资料和试验,我总结了解决方法,只需两步。 使用到的浏览器 ie浏览器 这里写目录标题两步快速解决浏览器上传本地... -
程序员应该如何解决买菜难问题?手把手带你利用无障碍辅助功能快速下单抢菜
2022-04-19 22:26:46作为一名善于思考的程序员可不能这样,所以想到了利用安卓无障碍辅助帮助我们快速点击进行下单,从而解决频繁点击手酸导致点击速度下降的问题。 项目地址: 项目地址: 如果你是一个动手能力强的程序员,那么欢迎... -
如何快速解决Android Studio中的HAMX安装失败问题
2021-09-19 20:25:01第一次安装Android Studio下载完SDK与模拟器,运行程序时可能会出现这样的问题:虚拟机无法运行 这说明你电脑的HAMX文件可能下载未安装或者BIOS中权限未开启,导致启动avd模拟器不成功 解决方案: 1.下载... -
怎么去思考一个问题,提高解决问题的能力
2020-11-25 18:03:33怎么去思考一个问题,提高解决问题的能力 前言: #:本文转发自【半路歌雨】 #:http://blog.jboost.cn/think-like-a-programmer.html #:如有侵权,联系即删 技术人员的价值,不在于你能写出多么优美的代码,也不... -
快速排序,归并排序导致栈溢出如何解决?(非递归算法)
2022-04-02 19:10:39本期主要讲解:栈溢出的主要原因,内存分布的认识,快速排序和归并排序的非递归算法,结合上期,充分带你学习排序,内含有精美的配图和优质的代码风格! -
快速解决安装python没有scripts文件夹的问题
2020-11-22 16:29:40让人无法接受的是,只要是我给的安装包一定不会产生scripts文件夹,所以应该是我的安装包出现了问题,建议出现这个问题的宝宝们先去换个安装包,如果换了之后还有这个错误,可以看一下我是怎么解决的,仅供参考。... -
Vue中快速解决跨越的问题
2019-05-14 20:58:28解决跨越问题 以百度音乐接口为例: 1.在项目的 config 文件夹中的 index.js 加入如下代码: dev: { // Paths assetsSubDirectory: 'static', assetsPublicPath: '/', proxyTable: { "/baidu_music_api": { ... -
机器学习解决问题的步骤
2017-01-25 17:14:19机器学习解决问题的步骤针对任何一个打算由机器学习算法来解决的问题,都有一种『套路』存在,只要按照这个模板『按部就班』就能够得到一个结果。就跟一个产品的生产流水线是一个道理。但是得到结果的好坏跟你是否是... -
git pull 代码库时提示冲突需Merge 快速解决代码同步遇到的冲突问题 so easy的方法
2021-11-17 10:20:26git pull 代码库时提示冲突需Merge 快速解决代码同步遇到的冲突问题 so easy的方法 error:Yourlocalchangesto'wkbenchapp/views.py'wouldbeoverwrittenbymerge.Aborting.Please,... -
开发过程中遇到的问题,如何快速解决呢?
2018-10-17 14:32:02我之前公司里,调查了上百名工程师,询问他们在工作中遇到问题的时候,通常用什么方法来解决?...不知道你是用哪一种方法来解决问题的,也许你的问题交给我,让我帮帮你! 包括且不限于下表技能 ... -
电脑慢的快速解决办法 四种方法电脑速度变快10倍
2021-07-27 06:55:45电脑慢的快速解决办法一、系统常规优化1、你可以关闭系统属性中的特效,点击开始,控制面板,系统,高级,性能,设置在视觉效果中,设置为调整为最佳性能,确定。2、双击我的电脑,属性,高级,错...