简答题

对于记录序列A[1]~A[n]可按如下如下方法实现奇偶交换排序:第一趟对所有的奇数i,将A[i]和A[i+1]进行比较,第二趟对所有的偶数i,将A[i]和A[i+1]进行比较,每次比较时若A[i]>A[i+1],则将二者交换,然后重复上述排序过程,直至整个数组有序。编写算法实现上述奇偶交换排序。

正确答案

具体算法如下:

答案解析

相似试题
  • 考虑在序列A[1..n]中找最大最小元素的问题。一个分治算法描述如下:如果n≤2就直接求解。否则,将序列等分成两个子序列A[1..n/2]和A[n/2+1..n],分别找出这两子序列的最大最小元素x1,y1和x2,y2;然后据此求出A[1..n]的最大元素x=max{x1,x2}及最小元素y=min{y1,y2}。请给出该算法计算时间T(n)满足的递归方程,并解方程来确定算法的时间复杂度。假定n=2k(k为正整数)。

    简答题查看答案

  • 给定n个记录的有序序列A[n]和m个记录的有序序列B[m],将它们归并为一个有序序列,存放在C[m+n]中,试写出这一算法。

    简答题查看答案

  • 给出一个由n个数组成的序列A[1…n],要求找出它的最长单调上升子序列,设m[i](1≤i≤n),表示以A[i]结尾的最长单调上升子序列的长度,则m[1]=1,m[i](1

    单选题查看答案

  • 以下冒泡法程序对存放在a[1],a[2],……,a[n]中的序列进行排序,完成程序中的空格部分,其中n是元素个数,要求按升序排列。

    简答题查看答案

  • 对于二维数组A[m][n],其中m<=80,n<=80,先读入m和n ,然后读该数组的全部元素,对如下三种情况分别编写相应函数:  (1)求数组A靠边元素之和;  (2)求从A[0][0]开始的互不相邻的各元素之和;  (3)当m=n时,分别求两条对角线上的元素之和,否则打印出m!=n的信息。

    简答题查看答案

  • 对给定的序号j(1<j<n),要求在无序记录A[1]~A[n]中找到按关键码从小到大排在第j位上的记录,试利用快速排序的划分思想设计算法实现上述查找。

    简答题查看答案

  • 对于给定的一个序列(a1,a2,...aN),1≤N≤1000。我们可以得到一些递增上升的子序列(ai1,ai2,...aiK),这里1≤i1〈i2〈...iK≤N。比如,对于序列(1,7,3,5,9,4,8),有它的一些上升子序列,如(1,7),(3,4,8)等等。这些子序列中最长的长度是4,比如子序列(1,3,5,8)。你的任务:就是对于给定的序列,求出最长上升子序列的长度。要求写出你设计的算法思想及递推函数的公式表达。

    简答题查看答案

  • 以下函数为直接选择排序算法,对a[1],a[2],…a[n]中的记录进行直接选择排序,完成程序中的空格。

    简答题查看答案

  • 以下函数在a[0]到a[n-1]中,用折半查找算法查找关键字等于k的记录,查找成功返回该记录的下标,失败时返回-1,完成程序中的空格。

    简答题查看答案