当前位置: 首页 > 编程日记 > 正文

快速排序(二)最后修改

 1 //2012-07-16
 2 void quickSort(element list[], int left, int right)//快速排序
 3 {
 4     int i=left;
 5     int j=right;
 6 
 7     if(i >= j) //判断需要i<j
 8         return;
 9 
10     element temp=list[i];
11 
12     while(i<j)
13     {
14         while(i<j && list[j]>temp)//需要i<j
15             j--;
16 
17         list[i]=list[j];
18         i++;
19 
20         while(i<j && list[i]<temp)//需要i<j
21             i++;
22 
23         list[j]=list[i];
24         j--;
25     }
26     
27     list[j+1]=temp;// 运行到此处j j+1 i
28 
29     quickSort(list,left,j);
30     quickSort(list,i,right);
31 }
32 
33 void quickSort2(element list[], int left, int right)
34 {
35     int i=left;
36     int j=right;
37 
38     if(i>=j)
39         return;
40 
41     element pivot=list[i];
42     element temp;
43     j++;//以下i++,j--了一次,i是需要首先+1,但j不需要,所以此处需要提前+1,抵消
44     
45     do{
46         do{
47             i++;
48         }while( list[i]<pivot);//不需要i<j,便于之后的交换操作和子快速排序
49 
50         do{
51             j--;
52         }while(list[j]>pivot);//不需要i<j
53 
54         if(i<j)
55         {
56             temp=list[i];
57             list[i]=list[j];
58             list[j]=temp;
59         }
60     }while(i<j);//运行到此处,a[i]>pivot,a[j]<pivot,j=i-1;
61                 //一般情况结束时left...j,i...right  [j]<pivot,[i]>pivot所以交换left和j,
62                 //特殊情况结束时left......right,i=j=right+1//1,2,3,4,5,6,7
63                 //即结束时,i后的都大于pivot,j前的都小于pivot,其中[j]<pivot,[i]>pivot  
64     list[left]=list[j];
65     list[j]=pivot;
66 
67     quickSort(list,left,j-1);
68     quickSort(list,j+1,right);
69     
70 }

下面的是对quickSort方法的修改:

删除了quickSort的18、24行,以及27、29、30进行对应修改。修改之后使得如下代码运行到23行时,i=j,这样思维更清晰。

 1 void quickSort3(element list[], int left, int right)//快速排序,修改时间2012-09-18 16:40:40
 2 {
 3     int i=left;
 4     int j=right;
 5 
 6     if(i >= j) //判断需要i<j
 7         return;
 8 
 9     element temp=list[i];
10 
11     while(i<j)
12     {
13         while(i<j && list[j]>temp)//需要i<j
14             j--;
15 
16         list[i]=list[j];
17 
18         while(i<j && list[i]<temp)//需要i<j
19             i++;
20 
21         list[j]=list[i];
22     }
23     list[i]=temp;// 运行到此处i=j
24 
25     quickSort3(list,left,i-1);
26     quickSort3(list,j+1,right);
27 }

转载于:https://www.cnblogs.com/zjhnl/archive/2012/07/16/2593116.html

相关文章:

性能超越GPU、FPGA,华人学者提出软件算法架构加速AI实时化

作者 | 王言治&#xff0c;美国东北大学电子与计算机工程系助理教授出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;近年来&#xff0c;机器学习(Machine Learning)领域的研究和发展可谓是与日俱新&#xff0c;各式各样与机器学习相关的研究成果与应用层出不穷&#…

PHP获取毫秒时间戳,利用microtime()函数

PHP获取毫秒时间戳&#xff0c;利用microtime()函数 php本身没有提供返回毫秒数的函数&#xff0c;但提供了一个microtime()函数&#xff0c;借助此函数&#xff0c;可以很容易定义一个返回毫秒数的函数。php的毫秒是没有默认函数的&#xff0c;但提供了一个microtime()函数&am…

.NET中添加控件数组

作者&#xff1a;cuike519的专栏 http://blog.csdn.net/cuike519/添加控件数组 在.NET里面我好像没有找到有关于控件数组的说明,但是前两天偶在网上看到了一篇关于如何在.NET里面实现控件数组的文章(该文章请参看MSDN).记得大学的时候在使用VB的时候使用过控件数组,可是到了…

如何在机器学习的框架里实现隐私保护?

编者按&#xff1a;数据时代&#xff0c;人们从技术中获取便利的同时&#xff0c;也面临着隐私泄露的风险。微软倡导负责任的人工智能&#xff0c;因此机器学习中的隐私保护问题至关重要。本文介绍了目前机器学习中隐私保护领域的最新研究进展&#xff0c;讨论了机密计算、模型…

函数图像轻松画:教你用永中图象

函数图像轻松画&#xff1a;教你用永中图象 函数图像轻松画&#xff1a;教你用永中图象转载于:https://blog.51cto.com/premium/933220

c语言语系的命名风格和java系命名风格

c语言系的命名风格&#xff1a;单词之间使用下划线分隔。如上图。 java语言是另外一个系&#xff0c;javascript属于java语系(当年就是想借助java的名气所以命名javascript)。java语系是驼峰式命名法&#xff0c;如getElementById()。如果使用c语系命名风格则使用下划线分隔 ge…

全国IP地址分配表

xa.sn.cn,西安公众网,西安,陕西,CN,202.100.0.* xa.sn.cn,西安公众网,西安,陕西,CN,202.100.1.* xa.sn.cn,西安公众网,西安,陕西,CN,202.100.2.* xa.sn.cn,西安公众网,西安,陕西,CN,202.100.3.* xa.sn.cn,西安公众网,西安,陕西,CN,202.100.4.* xa.sn.cn,西安公众网,西安,陕西,C…

神同步!美国三地 Tesla 车主,自动驾驶都撞了警车

来源 | HyperAI超神经&#xff08;ID&#xff1a;HyperAI&#xff09;内容概要&#xff1a;上周在美国北卡州发生了一起交通事故&#xff0c;一辆自动驾驶模式下的 Tesla 撞击了停靠在路边的警车&#xff0c;虽未造成人员伤亡&#xff0c;但车辆损毁严重。事故调查中发现&#…

Q币才是腾讯真正的世界级产品

本文受《虚拟货币将是下一个大平台》启发而来。何玺认为&#xff0c;腾讯Q币本身就具有全球化虚拟货币的基因。 日前&#xff0c;有媒体报道了Pocket Change获得了由Google Ventures领投的500万美元A轮融资&#xff0c;使其融资总额达到640万美元。 Pocket Change是一个为Andro…

解决Office互操作错误检索COML类工厂中 CLSID为 {xxx}的组件时失败,原因是出现以下错误: 80070005...

Excel为例&#xff08;其他如Word也适用&#xff09;文件数据导入时报出以下错误: 检索COML类工厂中 CLSID为 {00024500-0000-0000-C000-000000000046}的组件时失败&#xff0c;原因是出现以下错误: 80070005&#xff0c;如图所示: 可以看到报出的异常类型为:UnauthorizedAcces…

再论制硬盘逻辑锁

姜卓睿 雷必武 一、序言 由于教学工作需要&#xff0c;本人在参看了贵刊98年第4期《硬盘逻辑锁技术研究及应用》与99年第3期《解开硬盘逻辑死锁的一种有效方法》的文章之后&#xff0c;决定以同类方法尝试一下&#xff0c;结果未获得成功&#xff0c;又“苦于”没有KV300 L …

​我国科学家成功研制全球神经元规模最大的类脑计算机

来源 | 之江实验室&#xff08;ID&#xff1a;zhejianglab&#xff09;9月1日&#xff0c;浙江大学与之江实验室举办成果发布会&#xff0c;共同发布我国首台基于自主知识产权类脑芯片的类脑计算机&#xff08;Darwin Mouse&#xff09;。浙江大学校长吴朝晖院士出席并讲话。他…

批处理获取目录下所有文件名

由于要处理一些文件&#xff0c;找了个这样的批处理&#xff1a; 输出目录及子目录下所有的jpg图片的文件名&#xff0c;不含扩展名 1 echo off 2 cd.>List.txt 3 for /f "delims" %%i in (dir /s/a-d /b *.jpg) do >>List.txt echo %%~ni>>JustName.…

1001: 整数求和

描述:求两个整数之和输入:输入数据只包括两个整数A和B。输出:两个整数的和。样例输入:1 2样例输出:3考点:运算符代码&#xff1a; #include <stdio.h> int main() {int a,b;int c;scanf("%d",&a);scanf("%d",&b);cab;printf("%d",…

ASP.NET 2.0 中的新增安全功能

发布日期&#xff1a; 8/26/2004| 更新日期&#xff1a; 8/26/2004Stephen Walther Microsoft Corporation 适用于&#xff1a; Microsoft ASP.NET 2.0 Microsoft ASP.NET framework Microsoft SQL Server Microsoft Visual Studio .NET 摘要&#xff1a;ASP.NET 2.0 包含一些新…

GitHub 标星 20000+,国产 AI 开源从算法开始突破 | 专访商汤联合创始人林达华

作者 | 阿司匹林责编 | 李雪敬封图 | CSDN 下载自视觉中国作为已经有4000多名员工的AI独角兽&#xff0c;商汤的一举一动备受关注。从2018年开始&#xff0c;奔着“开源、统一、可复现”的目标&#xff0c;商汤开始建设人工智能算法的开源体系。当时&#xff0c;商汤联合创始人…

那些年,我们一起学过的汇编----之伪指令

弄懂了前面几篇关于基础的文章&#xff0c;下面就开始我们真正的汇编之旅了&#xff0c;在这一篇中我们着重来强调下汇编语言的伪指令。伪指令是汇编语言程序设计中的一个主要的部分&#xff0c;属于控制命令&#xff0c;在汇编语言中的数据定义、存储单元分配、指示程序结果等…

JavaScript-数据引用类型对象

1 <!DOCTYPE html>2 <html>3 <head lang"en">4 <meta charset"UTF-8">5 <title></title>6 </head>7 <body>8 <script>9 //按值传递:两个变量间赋值时,或将变量作为参数传入函数时,其实…

热点 | Excel不“香”了,数据分析首选Pyhton!

Excel一直在求职中有着不可动摇的地位无论是投行、咨询、四大曾经都会在JD中明确要求会Excel&#xff0c;而Excel称霸的时代已经过去&#xff01;事实上&#xff0c;为了追求更高的效率和质量&#xff0c;他们开始使用比Excel更高效的Python&#xff0c;随后交易收入增长了15%。…

ASP.NET中实现打印

怎样才可以调用打印机进行打印并且对纸张类型进行设置呢&#xff1f; --------------------------------------------------------------- <OBJECT id"WebBrowser" height"0" width"0" classid"CLSID:8856F961-340A-11D0-A96B-00…

you have new email in /var/spool/mail/root/

有时在进入系统的时候经常提示You have new mail in /var/spool/mail/root 解决方法&#xff1a;修改系统配置文件/etc/profile&#xff0c;告诉系统不要去检查邮箱. 具体操作&#xff1a; 命令行输入&#xff1a;echo "unset MAILCHECK" >> /etc/profile 【把…

写时复制,写时拷贝,写时分裂,Copy on write

2019独角兽企业重金招聘Python工程师标准>>> 写时复制&#xff0c;写时拷贝&#xff0c;写时分裂 &#xff08;Copy-on-write&#xff0c;简称COW&#xff09;是计算机资源管理方面的一种优化技术&#xff0c;有着广泛的应用&#xff0c;比如内存管理&#xff08;进…

C#生成pdf的源代码

作者&#xff1a;qieyj(温馨港湾) http://search.csdn.net/Expert/topic/1256/1256076.xml?temp.1866419//write by wenhui.orgusing System;using System.IO;using System.Text;using System.Collections; namespace PDFGenerator{ public class PDFGenerator{static fl…

迁移性好、多用途,港中文提出特征分离的无监督人类三维姿态表征​

来源 | 我爱计算机视觉&#xff08;ID:aicvml&#xff09;本文将介绍一种基于特征分离的通用人类姿态特征的学习算法Unsupervised Human 3D Pose Representation with Viewpoint and Pose Disentanglement。该算法从无监督的特征分离过程中&#xff0c;习得了一个迁移性好、多用…

解決Linux下Android开发真机调试设备不被识别问题

为什么80%的码农都做不了架构师&#xff1f;>>> 在google找了不少关于这个的资料&#xff0c;各种添加和修改系统文件&#xff0c;但是我的defy依旧没有被识别。尼马的&#xff01; 好吧&#xff0c;是我低估了Android的sdk的adb调试工具&#xff0c;其实简单的两个…

在Server 2003上部署IIS+PHP+MySQL配置清单

在Server 2003上部署IISPHPMySQL I.安装Windows Server 2003 将光盘放入光驱中&#xff0c;设置BIOS&#xff0c;从CDROM引导加载安装程序&#xff0c;等待启动&#xff1b; 设置注册信息&#xff0c;名字和公司组织名&#xff1b; 填写安装密钥&#xff1b; 设置远程连接数目&…

用Python打造一款文件搜索工具,所有功能自己定义

前言在日常的办公中&#xff0c;我们经常会从一堆不同格式的文件(夹)中搜索特定的文件&#xff0c;可能你是凭着记忆去找或是借助软件&#xff0c;但你有想过如何用Python实现吗&#xff1f;本文将基于几个常见的搜索操作讲解。扫描路径内的内容有些时候我们会希望在当前文件夹…

vlan间路由实验

路由与交换技术实验报告 实验7 vlan间路由实验 班级&#xff1a;130462 姓名&#xff1a;张欣国 学号&#xff1a;13046210 一、 实验目的 1. 了解vlan间路由的不同方法&#xff1b; 2. 了解路由备份; 二、 实验步骤与内容 1. 详细阅读操作过程&#xff0c;认真完…

.net中连接SYBASE的种种问题

作者&#xff1a;zwztu http://search.csdn.net/Expert/topic/1612/1612693.xml?temp.2369806首先如果用OLEDB连呢&#xff1f;如果用ASE 的OLEDB 提供者&#xff0c;那这个提供者哪里有下呢&#xff1f; 其次如果用MSDATASHAPE连&#xff0c;可以是可以&#xff0c…

struts2中使用标签操作静态方法等

2019独角兽企业重金招聘Python工程师标准>>> 有的时候对<%%>特别敏感&#xff0c;不想用jsp的<% %>来调用java类中的静态方法&#xff0c;这时候我们可以用struts2的ognl标签来调用。 下面为struts2的配置文件&#xff1a; <struts><!-- ognl标…