数据结构(六)——查找和排序练习题

  1. 写出折半查找的递归算法,初始调用时,low为1,high为ST.length
  2. 线性表中各结点的检索概率不等,则可用如下策略提高顺序检索的效率:若找到指定的结点,将该结点和其前驱结点(若存在)交换,使得经常被检索的结点尽量位于表的前端,试设计在顺序结构和链式结构的线性表上实现上述策略的顺序检索算法
  3. 数组中有一个数字出现的次数超过了数组长度的一半,请找出这个数字
  4. 编写双向冒泡排序算法,在正反两个方向交替进行扫描,即第一趟把关键字最大的元素放在最后面,第二趟把关键字最小的元素放在序列的最前面,如此反复进行。
  5. 已知线性表按顺序存储,且每个元素都是不相同的整型元素,设计把所有奇数移动到所有偶数前面的算法(要求时间最少,辅助空间最少)
  6. 重新编写快速排序算法,使之每次选取的枢轴值都是随机地从当前子表中选取的
  7. 编写一个算法,使之能够在数组L[1...n]中找出第k小的元素(即从小到大排序后处于第k个位置的元素
  8. 荷兰国旗问题:设有一个仅由红、白、蓝三种颜色的条块组成的条块序列,请编写一个时间复杂度为O(n)的算法,使得这些条块按红、白、蓝的顺序排好,即排成荷兰国旗图案
  9. 已知由n个正整数(n>=2)构成的集合A={ak|0<k<n},将其划分为两个不相交的子集A1和A2,元素个数分别是n1和n2,A1和A2中元素之和分别为S1和S2.设计一个尽可能高效的划分方法,满足|n1-n2|最小且|S1-S2|最大。
  10. 编写一个算法,在基于单链表表示的待排序关键字序列上进行简单选择排序
  11. 试设计一个算法,判断一个数据序列是否构成一个小根堆
  12. 设顺序表用数组A[]表示,表中元素存储在数组下标为1~m+n的范围内,前m个元素递增有序,后n个元素递增有序,设计一个算法,使得整个顺序表有序
  13. 有一种简单的排序算法,叫做计数排序。这种排序算法对一个待排序的表(用数组表示)进行排序,并将排序结果存放到另一个新的表中,必须注意的是,表中所有待排序的关键码互不相同,计数排序算法针对表中的每个几轮,扫描待排序的表一趟,统计表中有多少个记录的关键码比该记录的关键码小,设计针对某一个记录,统计出的计数值为c,那么这个记录在新的有序表中的合适的存放位置即为c。实现计数排序的算法
  14. 如何对n个整数进行排序,要求时间复杂度为O(n),空间复杂度为O(1)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值