假设―个顺序表[tex=0.714x1.0]ravtxd2oof9d0U26ZFAIhw==[/tex]中所有元素为整数,设计一个算法调整该顺序表,使其中所有小于零的元素放在所有大于等于零的元素的前面。
解 : [tex=1.786x1.286]mnNXUTyLCMCnMwutzH6btQ==[/tex] 分别置初值为 [tex=0.5x1.0]Sc0he7miKB3YF9rgXf2dDw==[/tex] 和 [tex=5.357x1.214]+YfBqpoF6VwqtKNLF2GpM1gVWqLFCZmrmzV6avh1jkc=[/tex] 当 [tex=2.143x1.214]hOr2JzwZJZGiKMGcFGzENQ==[/tex]时循环: [tex=0.357x1.0]O88k7AtkDgTC9kv/8dY0lg==[/tex]从前向后扫描顺序表[tex=1.0x1.214]YHs5BX1EMaBNmbX0qd/96w==[/tex] 找大于等于[tex=0.5x1.0]Sc0he7miKB3YF9rgXf2dDw==[/tex] 的元索, [tex=0.429x1.214]rmIPPJrP+tFN2kAYPlU/4g==[/tex] 从居向前扫描顺序表 [tex=1.0x1.214]YHs5BX1EMaBNmbX0qd/96w==[/tex] 找小于[tex=0.5x1.0]Sc0he7miKB3YF9rgXf2dDw==[/tex]的元素,当[tex=2.143x1.214]hOr2JzwZJZGiKMGcFGzENQ==[/tex]时将两元素交换。对应的算法如下:void fun( SqList &L){ int i = o,j- L.length- 1; ElemType tmp; while ( i<=j) { while (L. daLa[ i]<0)i++ ; while (L.data[j]>=0)j--; printf("A[ % d] : % d A[ % d] :%d交换\n”,i, j,L.data[ i],L.data[ j]); if ( i
举一反三
- 有一个顺序表L.假设元素值为整数,设计一个尽可能高效的算法将所有值小于0的元素移到所有值大于0的元素的前面,并给出算法的时间复杂度和空间复杂度。
- 设计一个高效算法,将顺序表[tex=0.714x1.0]ravtxd2oof9d0U26ZFAIhw==[/tex]中的所有元素逆置,要求算法的空问复杂度为[tex=2.071x1.357]4tn8z3a70oWd+Kan/q/D8g==[/tex]。
- 某非空单链表L中所有元素为整数,设计一个算法将所有小于零的节点移到所有大于等于零的节点的前面
- 移动元素(exp2-3.cpp)【问题描述】若一个线性表L采用顺序存储结构,其中所有元素为整数。设计一个算法将所有小于0的元素移到所有大于0的元素的前面,要求算法的时间复杂度为O(n),空间复杂度为O____。
- 已知一个整数线性表采用顺序表L存储。设计一个尽可能高效的算法删除其中所有值为x的元素(假设L中值为x的元素可能有多个)。
内容
- 0
假设有一个顺序表L,其中元素为整数且所有元素值均不相同。设计一个算法将最大值元素与最小值元素交换。
- 1
假设数组A[n]的n个元素中有多个零元素,设计一个算法,将A中所有的非零元素依次移到A的前端。
- 2
设计一个算法,从有序顺序表中删除所有其值重复的元素,使表中所有元素的值均不相同。
- 3
对于具有n个元素的线性表,算法___在单链表上实现要比在顺序表上实现效率更高。 A: 删除所有值为x的元素 B: 在最后一个元素的后面插入一个新元素 C: 顺序输出前k个元素 D: 第i个元素与第n-i-1个元素交换
- 4
设计一个算法,从顺序表L中(SqListL)删除具有给定值x(ElemTypex)的所有元素。