判断输入两个正整数a和n的n个整数是否有序,如输入两个正整数a和n1,2,3,则输出有序,若输入两个正整数a和n1,3,2,则输出无序

C++习题答案_百度文库
赠送免券下载特权
10W篇文档免费专享
部分付费文档8折起
每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
C++习题答案
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩102页未读,
定制HR最喜欢的简历
你可能喜欢c++中从若干个数据中查找出某个元素 两种情况 (1)有序 (2)无序_百度知道
c++中从若干个数据中查找出某个元素 两种情况 (1)有序 (2)无序
c++中从若干个数据中查找出某个元素两种情况(1)有序(2)无序程序分别怎么写
我有更好的答案
  概述  内排序的方法有许多种,按所用策略不同,可归纳为五类:插入排序、选择  
排序、交换排序、归并排序和分配排序。  其中,插入排序主要包括直接插入排序和希尔排序两种;选择排序主要包括直接选择排序和堆排序;交换排序主要包括气(冒)泡排序和快速排序。  排序分类  ◆稳定排序:假设在待排序的文件中,存在两个或两个以上的记录具有相同的关键字,在  用某种排序法排序后,若这些相同关键字的元素的相对次序仍然不变,则这种排序方法  是稳定的。其中冒泡,插入,基数,归并属于稳定排序,选择,快速,希尔,堆属于不稳定排序。  ◆就地排序:若排序算法所需的辅助空间并不依赖于问题的规模n,即辅助空间为O(1),  则称为就地排序。  冒泡排序  已知一组无序数据a[1]、a[2]、……a[n],需将其按升序排列。首先比较a[1]与a[2]的值,若a[1]大于a[2]则交换两者的值,否则不变。再比较a[2]与a[3]的值,若a[2]大于a[3]则交换两者的值,否则不变。再比较a[3]与a[4],以此类推,最后比较a[n-1]与a[n]的值。这样处理一轮后,a[n]的值一定是这组数据中最大的。再对a[1]~a[n-1]以相同方法处理一轮,则a[n-1]的值一定是a[1]~a[n-1]中最大的。再对a[1]~a[n-2]以相同方法处理一轮,以此类推。共处理n-1轮后a[1]、a[2]、……a[n]就以升序排列了。  优点:稳定;  缺点:慢,每次只能移动相邻两个数据。  选择排序  冒泡排序的改进版。  每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。  选择排序是稳定的排序方法(很多教科书都说选择排序是不稳定的,但是,完全可以将其实现成稳定的排序方法)。  n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果:  ①初始状态:无序区为R[1..n],有序区为空。  ②第1趟排序  在无序区R[1..n]中选出关键字最小的记录R[k],将它与无序区的第1个记录R[1]交换,使R[1..1]和R[2..n]分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区。  ……  ③第i趟排序  第i趟排序开始时,当前有序区和无序区分别为R[1..i-1]和R(1≤i≤n-1)。该趟排序从当前无序区中选出关键字最小的记录 R[k],将它与无序区的第1个记录R交换,使R[1..i]和R分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区。  这样,n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果。  优点:移动数据的次数已知(n-1次);  缺点:比较次数多。  插入排序  插入排序:已知一组升序排列数据a[1]、a[2]、……a[n],一组无序数据b[1]、b[2]、……b[m],需将二者合并成一个升序数列。首先比较b[1]与a[1]的值,若b[1]大于a[1],则跳过,比较b[1]与a[2]的值,若b[1]仍然大于a[2],则继续跳过,直到b[1]小于a数组中某一数据a[x],则将a[x]~a[n]分别向后移动一位,将b[1]插入到原来a[x]的位置这就完成了b[1]的插入。b[2]~b[m]用相同方法插入。(若无数组a,可将b[1]当作n=1的数组a)  优点:稳定,快;  缺点:比较次数不一定,比较次数越多,插入点后的数据移动越多,特别是当数据总量庞大的时候,但用链表可以解决这个问题。  shell排序  由希尔在1959年提出,又称希尔排序(shell排序)。  已知一组无序数据a[1]、a[2]、……a[n],需将其按升序排列。发现当n不大时,插入排序的效果很好。首先取一增量d(d&n),将a[1]、a[1+d]、a[1+2d]……列为第一组,a[2]、a[2+d]、a[2+2d]……列为第二组……,a[d]、a[2d]、a[3d]……列为最后一组以次类推,在各组内用插入排序,然后取d'&d,重复上述操作,直到d=1。  优点:快,数据移动少;  缺点:不稳定,d的取值是多少,应取多少个不同的值,都无法确切知道,只能凭经验来取。  快速排序  快速排序是目前已知的最快的排序方法。  已知一组无序数据a[1]、a[2]、……a[n],需将其按升序排列。首先任取数据a[x]作为基准。比较a[x]与其它数据并排序,使a[x]排在数据的第k位,并且使a[1]~a[k-1]中的每一个数据&a[x],a[k+1]~a[n]中的每一个数据&a[x],然后采用分治的策略分别对a[1]~a[k-1]和a[k+1]~a[n]两组数据进行快速排序。  优点:极快,数据移动少;  缺点:不稳定。  箱排序  已知一组无序正整数数据a[1]、a[2]、……a[n],需将其按升序排列。首先定义一个数组x[m],且m&=a[1]、a[2]、……a[n],接着循环n次,每次x[a]++.  优点:快,效率达到O(1)  缺点:数据范围必须为正整数并且比较小  箱排序(Bin Sort)  1、箱排序的基本思想  箱排序也称桶排序(Bucket Sort),其基本思想是:设置若干个箱子,依次扫描待排序的记录R[0],R[1],…,R[n-1],把关键字等于k的记录全都装入到第k个箱子里(分配),然后按序号依次将各非空的箱子首尾连接起来(收集)。  【例】要将一副混洗的52张扑克牌按点数A&2&…&J&Q&K排序,需设置13个&箱子&,排序时依次将每张牌按点数放入相应的箱子里,然后依次将这些箱子首尾相接,就得到了按点数递增序排列的一副牌。  2、箱排序中,箱子的个数取决于关键字的取值范围。  若R[0..n-1]中关键字的取值范围是0到m-1的整数,则必须设置m个箱子。因此箱排序要求关键字的类型是有限类型,否则可能要无限个箱子。  3、箱子的类型应设计成链表为宜  一般情况下每个箱子中存放多少个关键字相同的记录是无法预料的,故箱子的类型应设计成链表为宜。  4、为保证排序是稳定的,分配过程中装箱及收集过程中的连接必须按先进先出原则进行。  (1) 实现方法一  每个箱子设为一个链队列。当一记录装入某箱子时,应做人队操作将其插入该箱子尾部;而收集过程则是对箱子做出队操作,依次将出队的记录放到输出序列中。  (2) 实现方法二  若输入的待排序记录是以链表形式给出时,出队操作可简化为是将整个箱子链表链接到输出链表的尾部。这只需要修改输出链表的尾结点中的指针域,令其指向箱子链表的头,然后修改输出链表的尾指针,令其指向箱子链表的尾即可。  5、算法简析  分配过程的时间是O(n);收集过程的时间为O(m) (采用链表来存储输入的待排序记录)或O(m+n)。因此,箱排序的时间为O(m+n)。若箱子个数m的数量级为O(n),则箱排序的时间是线性的,即O(n)。  注意:  箱排序实用价值不大,仅适用于作为基数排序的一个中间步骤。  归并排序  归并排序是多次将两个或两个以上的有序表合并成一个新的有序表。最简单的归并是直接将两个有序的子表合并成一个有序的表。  归并排序是稳定的排序.即相等的元素的顺序不会改变.如输入记录 1(1) 3(2) 2(3) 2(4) 5(5) (括号中是记录的关键字)时输出的 1(1) 2(3) 2(4) 3(2) 5(5) 中的2 和 2 是按输入的顺序.这对要排序数据包含多个信息而要按其中的某一个信息排序,要求其它信息尽量按输入的顺序排列时很重要.这也是它比快速排序优势的地方.  树型排序  树形排序的要素就是让所有的左子树都比根及右子树大,但不太稳定。  优点:效率高  缺点:不稳定  补充:  二分法平均查找效率是O(logn),但是需要数组是排序的。如果没有排过序,就只好先用O(nlogn)的预处理为它排个序了。而且它的插入比较困难,经常需要移动整个数组,所以动态的情况下比较慢。    哈希查找理想的插入和查找效率是O(1),但条件是需要找到一个良好的散列函数,使得分配较为平均。另外,哈希表需要较大的空间,至少要比O(n)大几倍,否则产生冲突的概率很高。    二叉排序树查找也是O(logn)的,关键是插入值时需要做一些处理使得它较为平衡(否则容易出现轻重的不平衡,查找效率最坏会降到O(n)),而且写起来稍微麻烦一些,具体的算法你可以随便找一本介绍数据结构的书看看。当然,如果你用的是c语言,直接利用它的库类型map、multimap就可以了,它是用红黑树实现的,理论上插入、查找时间都是O(logn),很方便,不过一般会比自己实现的二叉平衡树稍微慢一些。 看高德纳 计算机程序设计的艺术,卷二,是最详细的叙述这两个领域的著作之一
采纳率:90%
来自团队:
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。> 问题详情
如果我们采用二分查找法查找一个长度为n的有序表,则查找每个元素的平均比较次数()对应的判定树的
悬赏:0&答案豆
提问人:匿名网友
发布时间:
如果我们采用二分查找法查找一个长度为n的有序表,则查找每个元素的平均比较次数()对应的判定树的高度(假设树高h≥2)。A.大于B.小于C.等于D.无法确定请帮忙给出正确答案和分析,谢谢!
为您推荐的考试题库
您可能感兴趣的试题
1对于一个具有N个顶点的图,如果我们采用邻接矩阵法表示,则此矩阵的维数应该是(&&)A.(N-1)×(N-1)B.N×NC.(N+1)×(N+1)D.不确定2快速排序在最坏情况下的时间复杂度是(&&)A.O(nlogn)B.O(n2)C.O(n3)D.都不对3向一个栈顶指针为Top的链栈中插入一个s所指结点时,其操作步骤为(&&)A.Top—>next=s;B.s—>next=Top—>Top—>next=s;C.s—>next=Ttop=s;D.s—>next=T Top=Top—>4树最适合用来表示(&&)A.有序数据元素B.无序数据元素C.元素之间具有分支层次关系的数据D.元素之间无联系的数据
我有更好的答案
请先输入下方的验证码查看最佳答案
图形验证:
验证码提交中……
每天只需0.4元
选择支付方式
支付宝付款
郑重提醒:支付后,系统自动为您完成注册
请使用微信扫码支付(元)
支付后,系统自动为您完成注册
遇到问题请联系在线客服QQ:
恭喜你被选中为
扫一扫-免费查看答案!
请您不要关闭此页面,支付完成后点击支付完成按钮
遇到问题请联系在线客服QQ:
恭喜您!升级VIP会员成功
提示:请截图保存您的账号信息,以方便日后登录使用。
常用邮箱:
用于找回密码
确认密码:

我要回帖

更多关于 python输入n个整数 的文章

 

随机推荐