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