我已阅读并接受《用户协议》
注册VIP账号,全站资源免费任意下!
欢迎来到微视媒-源码测试 经验教程 小程序源码 设计资源
开通会员全站免费下载
立即加入
您的一年会员开通成功!
您的一年会员开通成功!
今日下载数已用完
升级会员
提交
下载提示!请输入验证码验证哦!
看不清,重新获取
提交验证码
首页 > 编程代码 >

冲刺必会代码100题

冲刺必会代码100题
顺序表
1、已知线性表(a1,a2,…,an)按顺序结构存储且每个元素为不相等的整数。设计把所
有奇数移动到所有偶数前边的算法(要求时间最少,辅助空间最少)。
【算法思想】:对于顺序表L,从左向右找到偶数L.data[i],从右向左找到奇数
L.data[j],将两者交换。循环这个过程直到i 大于j 为止。对应的算法如下:
void move(SqList &L)
{
int i = 0, j = L.length-1, k;
ElemType temp;
while(i <= j)
{
while(L.data[i]%2 == 1)
i++; //i 指向一个偶数
while(L.data[j]%2 == 0)
j--; //j 指向一个偶数
if(i < j)
{
temp = L.data[i]; //交换L.data[i]和L.data[j]
L.data[i] = L.data[j];
L.data[j] = temp;
}
}
}
本算法的时间复杂度为O(n),空间复杂度为O(1)。
2、设计一个高效算法,将顺序表L 中所有元素逆置,要求算法的空间复杂度为O(1)。
【算法思想】:扫描顺序表L 的前半部分元素,对于元素L.datai,将其与后半部分对
应元素L.data[L. length-i-1]进行交换。对应的算法如下:
void reverse(

669
134
  • 分 享 者:
    bjwj007
  • 更新时间:
    11-06
  • 资源评分:
  • 分享方式:
    共享
  • 技术支持:
    ffxyzll
  • 使用场景:
    仅供个人技术学习参考,拒绝商用
  • 可用操作:
您可能会喜欢的其他资源
点击咨询
在线时间:9:00-21:00