1.编写算法,对n个关键字取整数值的记录序列进行整理,以使所有关键字为负值的记录排在关键字为非负值的记录之前,要求:(1)采用顺序存储结构,至多使用一个记录的辅助存储空间;(2)算法的时间复杂度为O(n);void Divide(int a[ ],int n)//把数组a中所有值为负的记录调到非负的记录之前{low=0;high=n-1;while( ){while(low=0) high--; //以0作为虚拟的枢轴记录a[low]a[high];while(lowa[high];}}//Divide
相似题目
-
一组记录的关键字序列为(25,48,16,35,79,82,23,40,36,72),其中,含有5个长度为2的有序表,按归并排序的方法对该序列进行一趟归并后的结果为()。
-
以下函数为直接选择排序算法,对a[1],a[2],…a[n]中的记录进行直接选择排序,完成程序中的空格。https://assets.asklib.com/images/image2/2018072511530776870.jpg
-
在所有排序方法中,关键字比较的次数与记录的初始排列次序无关的是__(1)__。从未排序序列中依次取出元素与已排序序列(初始时为空)中的元素进行比较,将其放入已排序序列的正确位置上的方法,称为__(2)__。设有1000个无序的元素,希望用最快的速度挑选出其中前10个最大的元素,最好选用__(3)__排序法。空白(2)处应选择()
-
以下函数在a[0]到a[n-1]中,用折半查找算法查找关键字等于k的记录,查找成功返回该记录的下标,失败时返回-1,完成程序中的空格。https://assets.asklib.com/images/image2/2018072516232816916.jpg
-
在所有排序方法中,关键字比较的次数与记录的初始排列次序无关的是__(1)__。从未排序序列中依次取出元素与已排序序列(初始时为空)中的元素进行比较,将其放入已排序序列的正确位置上的方法,称为__(2)__。设有1000个无序的元素,希望用最快的速度挑选出其中前10个最大的元素,最好选用__(3)__排序法。空白(1)处应选择()
-
以下函数在a[0]到a[n-1]中,用折半查找算法查找关键字等于k的记录,查找成功返回该记录的下标,失败时返回-1,完成程序中的空格。https://assets.asklib.com/images/image2/2018072511504033073.jpg
-
在所有排序方法中,关键字比较的次数与记录的初始排列次序无关的是__(1)__。从未排序序列中依次取出元素与已排序序列(初始时为空)中的元素进行比较,将其放入已排序序列的正确位置上的方法,称为__(2)__。设有1000个无序的元素,希望用最快的速度挑选出其中前10个最大的元素,最好选用__(3)__排序法。空白(3)处应选择()
-
对n个元素值分别为-1、0或1的整型数组A进行升序排序的算法描述如下:统计A中-1、0和1的个数,设分别为n1、n2和n3,然后将A中的前n1个元素赋值为-1,第n1+1到n1+n2个元素赋值为0,最后n3个元素赋值为1。该算法的时间复杂度和空间复杂度分别为()。
-
1. 编写算法,对 n 个关键字取整数值的记录序列进行整理,以使所有关键字为负值的记录排在关键字为非负值的记录之前,要求: (1) 采用顺序存储结构,至多使用一个记录的辅助存储空间; (2) 算法的时间复杂度为 O(n); void Divide(int a[ ],int n)// 把数组 a 中所有值为负的记录调到非负的记录之前 { low=0;high=n-1; while ( ) { while(low=0) high--; // 以 0 作为虚拟的枢轴记录 a[low]
-
对n个待排序记录序列进行快速排序,所需要的最好时间是,最坏时间是。
-
对n个元素的有序表A[1..n]进行二分(折半)查找(除2取商时向下取整),查找元素A[i](1≤i≤n)时,最多与A中的(57)个元素进行比较。
-
37、根据直接插入排序算法对一组记录(54,38,96,23,15,72,60,45,83)进行排序,当把第7个记录60插入到有序表时,为寻找插入位置至少需进行关键字比较的次数为______。
-
在初始序列已基本有序(除去n 个元素中的某k 个元素后即呈有序,k<<n)的情况下,排序效率最高的算法是 。
-
假设有 n 个关键字不同的记录存于顺序表中,要求不经过整体排序而从中选出从[br][/br]大到小顺序的前 m(m<<n)个元素。试采用简单选择排序算法实现此选择过程。
-
设关键字序列(k1,k2,…,kn-1)是堆,设计算法将关键字序列(k1,k2,…,kn-1,x)调整为堆。
-
如果只想得到一个含有n个元素的序列中第k (k<<n)小元素之前的部分排序序列,最好采用什么排序方法?为什么?如有这样一个序列:{57,11,25,36,18,80.22}得到其第3个最小元索之前的部分序列{11,18,22},使用所选择的算法实现时,要执行多少次比较?
-
试编写一个算法,将元素序列(x1,x2,…,xn)循环右移p个位置,0≤p≤n。要求该算法的时间复杂度为O(n)而空间复杂度为O(1)。
-
编写一个递归算法,从大到小输出二叉搜索树中所有值不小于x的关键码。要求算法的时间复杂度为O(log<sub>2</sub>n+m),n为树中结点数,m为输出的关键码个数。
-
对于给定的一组关键宇(12,2,16,30,8,28,4,10,20,6,18),按照下列算法进行递增排序,写出每种算法第一趟排序后得到的结果:希尔排序(增量为5)得到(),快速排序(选第1个记录为基准元素)得到(),二路归并排序得到(),堆排序得到()
-
本次作业需要完成以下两个任务: 1:利用Python语言编写蒙特卡罗算法,计算圆周率(参考实验3的实验指导书)。 2:运行你所编写的程序,使用不同个数的随机点计算圆周率,观察结果并对其进行统计分析。 请提交以下两个文件(请把两个文件打包压缩后上传): 1)任务1对应的Python语言源程序; 2)word文档一份:该文档中需要包含你的程序对不同个数的随机点运行结果(至少要测试6个不同数量级的随机点个数,请把运行结果截图附在文档中),以及记录每个输入及其对应的圆周率计算结果的一个表格。
-
在进行算法设计和分析时,经常需要借助一些数据工具,如序列求和、递归议程求解等,如1+2+3+...+n-1,可以使用()求解
-
设输入序列为1,2,…,n,编写一个算法,判断一个序列p<sub>1</sub>,p<sub>2</sub>,...,p<sub>n</sub>,是否是一个合理的输出序列。
-
1. 复习学习python的基本知识点,实现以下程序。 (1)计算斐波那契(Fibonacci)数。 (2)用递归法计算组合数C(m,n)。 (3)计算并输出矩阵x各行元素的和。 (4)有一个包含n个整数的数组A,设计一个算法,删除多余的重复整数。 2. 复习结构体和指针的内容,并编写一个运用结构体指针链表的程序。
-
对于n个元素的关键字序列{K1,K2,,Kn},当目仅当满足Ki<=K2i且Ki<=K2i+1(1<i<n/2),则称该序列为小顶堆。若将其中的"<="换为">="则称其为大顶堆。由此可知,以下选项中,()是大顶堆。