MAT程序基础设计应用 8_第1页
MAT程序基础设计应用 8_第2页
MAT程序基础设计应用 8_第3页
MAT程序基础设计应用 8_第4页
MAT程序基础设计应用 8_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MATLABProgrammingandEngineeringApplicationMATLAB程序设计与工程应用本书知识结构第5章排序、索引和搜索5.1排序了解冒泡法和选择法排序的基本原理,掌握实现排序的MATLAB程序设计方法,掌握利用MATLAB内置函数sort()和sortrows()实现排序的方法。5.2索引了解索引排序的概念,掌握自行编制MATLAB程序和利用内置函数实现索引排序的方法。5.3搜索了解搜索的概念,了解顺序搜索和对分搜索的基本原理,掌握自行编制MTALAB程序和利用内置函数find()实现搜索的基本方法。5.1排序5.1.1排序的基本方法比较经典的排序算法有冒泡法和选择法。冒泡法排序是依次比较相邻的两个数,将小数放在前面,大数放在后面。选择法排序的基本原理是从第一个数开始,将其与后面的各数据进行比较,找出最小或者最大的数,将该数与第一个数交换位置。再从第二个数开始,将其与后面的各数进行比较,最小或者最大值作为第二个数并与第二个数据交换位置。依次类推。选择法排序是对冒泡法排序的改进,其基本原理是:每轮比较并不马上交换位置,而是找到本轮比较中的最小值或最大值,记下该数据的位置。在本轮比较结束后,再交换位置。这里以冒泡法为例,介绍排序的基本原理及程序实现方法。5.1排序实例5-1冒泡法排序%文件名:ex5_1.mclc clearA=[17803253176127666975]; %主程序Y=sortBub(A);fprintf("排序前排序后\n")fori=1:length(A) fprintf("%5d%5d\n",A(i),Y(i))end5.1排序%冒泡法排序函数functionX=sortBub(A) N=size(A,2); fori=1:N forj=1:N-1 ifA(j)>A(j+1) a=A(j); A(j)=A(j+1); A(j+1)=a; end end end X=A;end5.1排序5.1.2排序内置函数sort函数函数sort用于实现数组中各数据的排序,其基本调用格式为B

=sort(A,dim,direction)

其中,参数dim指定排序的维数,direction指定排序的顺序,可以为'ascend'或'descend'

,分别表示递增还是递减排序,默认为递增排序。如果没有参数dim和direction,则默认是对数组A

中的每一列进行递增排序。5.1排序举例:5.1排序sortrows函数sortrows函数可以实现对二维数组按行排序,其典型调用格式为:B

=

sortrows(A,col,direction)其中参数direction可以是字符向量'ascend'或'descend';参数col指定基于第col列对数组中的各行进行递增或递减排序。如果没有后面两个入口参数,则默认为对数组A中的各行按第一列进行递增排序。举例:5.1排序sortrows函数中的参数col和direction也可以是长度相同的行向量,其中每个元素对应排序的一列。例如,如下命令>>sortrows(A,[3,5],{'ascend','descend'})

基于第3列按升序对数组

A

的行进行排序,然后基于第5列按降序排序。举例:5.2索引索引(Index)实际上也是一种排序。进行索引排序时,不仅返回排序后的数组,同时将返回一个新的索引数组指示排序后各数据在原数组中的位置下标。例如,对前面得到的4*4数组A,执行如下命令上述sort和sortrows函数都提供了另外一种调用格式,可以很方便地实现索引排序。归纳起来,这种形式的入口参数完全相同,只是在调用时,需要另外给定索引数组出口参数,索引数组中的每个元素代表递增或者递减排序后原数据的位置。索引数组5.2索引如果执行如下命令:>>[C,I1]=sort(A,'descend')该命令对A中的各列分别进行递减排序,得到如下结果:5.3搜索搜索(Search)指的是在给定的一组数据(例如数组)中查找满足指定条件的数据。在高级语言程序中,常用的搜索算法有顺序搜索、对分搜索等。在MATLAB中,专门提供了find函数实现搜索。5.3.1搜索的基本方法这里主要介绍顺序搜索和对分搜索的基本方法及程序实现。所谓顺序搜索,就是从数组的第一个数据开始,逐一判断各元素是否为指定的数据(关键字),或者是否满足指定的条件。为实现对分搜索,首先必须对需要搜索的向量数据进行排序。之后,将关键字与向量中处于中间位置的元素进行比较。如果中间位置上的元素不等于关键字,则进一步确定应该在向量的前半部分还是后半部分,并在新确定的范围内,继续按上述方法进行查找,直到获得最终结果。5.3搜索实例5-2顺序搜索5.3搜索实例5-3对分搜索5.3搜索5.3搜索5.3.2搜索内置函数MATLAB中,提供了find函数,根据该函数的功能,结合条件表达式可以用于实现指定关键字或者满足指定条件的多个数据的搜索。非零数据的搜索函数find的基本功能是查找非零元素的索引和值,其基本调用为:k

=

find(X,n,dir)其中,参数X为输入向量或者数组;参数n为要查找的非零元素的个数;参数dir可以为'first'或

'last',表示查找与

X

中非零元素对应的最前面或者最后面

n个索引,默认值为

'first'。如果没有参数n和dir,则返回X中所有非零元素所在的下标位置向量。如果给定了参数n,则返回向量k的长度小于等于n,k中的每个元素表示在X中前面或者后面n个非零元素所在位置下标。5.3搜索举例:5.3搜索给定条件搜索要利用find函数查找符合给定条件的数组元素,可以利用关系表达式构造逻辑型数组,再作为find函数的第一个参数X。例如,如下命令及其执行结果为>>X=[1109246];>>find(X<5,3)ans=124其中,关系表达式X<5的返回结果为逻辑型向量[011001],向量中每个1表示在原向量X中对应位置上的元素小于5。因此将X<5作为find函数的第一个参数,即可搜索向量X中所有小于5的元素。返回结果为一个列向量,其中的每个元素表示数组X中前面3个小于5的元素在数组中的下标,即元素X(1)、X(2)和X(4)都小于5。5.3搜索搜索数据的返回find还有另外一种调用格式,不仅可以返回数据所在数组中的各维下标,同时还可以返回满足条件的数据。在这种调用格式中,需要给定两个或者3个返回参数。如果只给定两个返回参数,则返回数组

X

中每个非零元素的行和列下标。如果给定了第3个返回参数,则同时返回包含

X

中非零元素的向量。例如:>>X=[1-102;-151-1]X=1-102-151-1>>[r,c,v]=find(X,2)r=21c=12

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论