社区
C语言
帖子详情
华为面试题
fidt982
2005-12-01 09:18:08
有1,2,....一直到n的无序数组,求排序算法,并且要求时间复杂度为O(n),空间复杂度O(1),使用交换,而且一次只能交换两个数.
//这是昨天在华为的面试题,楞是没做出来.
...全文
3752
133
打赏
收藏
华为面试题
有1,2,....一直到n的无序数组,求排序算法,并且要求时间复杂度为O(n),空间复杂度O(1),使用交换,而且一次只能交换两个数. //这是昨天在华为的面试题,楞是没做出来.
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
133 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lovememememe
2006-02-12
打赏
举报
回复
mark
Fly3361bird
2005-12-19
打赏
举报
回复
测试了下,可以,
这个小程序高了这么长,结贴给分把
oosky2004
2005-12-19
打赏
举报
回复
不错。
这贴值得顶。。。
支持鼎鼎的算法,你是咋想出来的呢。
JOKER_UFO
2005-12-19
打赏
举报
回复
不好意思,又插嘴了.
排序算法的要点(目前最快排序算法复杂度为n*log2(n)) + 题目的条(时间复杂度为O(n))=>不可能.=> 于是想办法 =>再次利用题目特殊条件 => 方案(特殊问题特殊解决)
do i <-0 to n-1
if a[i] > i
swap(a[a[i]-1],a[i])
zzyzww
2005-12-19
打赏
举报
回复
计数排序,就好了!
woodysunny
2005-12-19
打赏
举报
回复
a = ( int* ) malloc ( ( n + 1 ) * sizeof( int ) );
这个是什么意思啊?
看不懂
ghy2001
2005-12-19
打赏
举报
回复
回一下,有空研究.
Fly3361bird
2005-12-18
打赏
举报
回复
for(i=0;i<n;i++)
{
b=a[i];
a[i]=a[b-1];
a[b-1]=b;
}
修改了下了上面的程序,
如果这都不算爱
2005-12-18
打赏
举报
回复
回头想来 weisunding(鼎鼎) 用了
if ( a[i] == i + 1)
i++;
还不如
a[i] = i + 1;
---------------------------------
HW到底要考什么?!
wklucky
2005-12-18
打赏
举报
回复
好好学习..
langzi520
2005-12-18
打赏
举报
回复
不晓得这个正确的算法是怎么想出来的/
laiwusheng
2005-12-18
打赏
举报
回复
大家要努力啊
lvfeng180
2005-12-18
打赏
举报
回复
ding
luyufan221
2005-12-17
打赏
举报
回复
那是C++语言里面的引用啊!!!
可以用C里面的指针代替!!
yuairong
2005-12-17
打赏
举报
回复
三楼的大哥,你的程序写得还可以,只不过里面有点看不懂的地方,如:int swap( int&, int& );和int swap( int &i, int &j )这两个地方,俺在运行是提示出错了,把这两个地方的&符号去掉以后就可以了,可不可以解释一下用‘&’的目的呀!!!
yuairong
2005-12-17
打赏
举报
回复
各位大师,大家都是高手,写程序要整齐美观一点我们这些菜鸟才可以顺利地看哦!!
谢谢了!!!
zhiguo_he
2005-12-17
打赏
举报
回复
**** Shaffle <<Data Structs And Algorithm Analysis>>的第2章有个时间空间权衡的例子就是这个问题
luyufan221
2005-12-17
打赏
举报
回复
我也觉的只有
weisunding(鼎鼎)是对的,
其它的算法都有问题
大家觉的呢??
如果这都不算爱
2005-12-16
打赏
举报
回复
//帮 weisunding(鼎鼎) 整理下,他的很经典啊,呵呵.
#include<iostream.h>
int main()
{
int a[] = {10,6,9,5,2,8,4,7,1,3};
int len = sizeof(a) / sizeof(int);
int temp;
for(int i = 0; i < len; )
{
temp = a[a[i] - 1];
a[a[i] - 1] = a[i];
a[i] = temp;
if ( a[i] == i + 1)
i++;
}
for (int j = 0; j < len; j++)
cout<<a[j]<<",";
return 0;
}
如果这都不算爱
2005-12-16
打赏
举报
回复
//经过测试,weisunding(鼎鼎) 的算法是对的, fabio210(狂笑江湖)的方法不对,下面这个算法也没问题
#include <stdio.h>
#include <iostream.h>
void swap(int v[], int i, int j)
{
int temp;
temp = v[i];
v[i] = v[j];
v[j] = temp;
}
void qsort(int v[], int left, int right)
{
int i, last;
if (left >= right)
return;
swap(v, left, (left+right)/2);
last = left;
for (i = left+1; i <= right; i++)
if (v[i] < v[left])
swap(v, ++last, i);
swap(v, left, last);
qsort(v, left, last-1);
qsort(v, last+1, right);
}
int main()
{
int a[] = {10, 5, 9, 7, 8, 2, 6, 3, 1, 4};
qsort(a, 0, 9);
for (int i = 0; i < 10; i++)
cout<<a[i]<<",";
cout<<endl;
}
加载更多回复(113)
华为
历届笔试
面试题
整理大全
整理了一下
华为
往届笔试
面试题
,希望对大家有帮助: 超级有用的
面试题
:Java常见
面试题
常见算法
面试题
数据库常见
面试题
操作系统常见
面试题
C/C++常见
面试题
大数据常见面试 python常见面试 来源:
华为
笔试面试圈>> 1、2018
华为
校招机试题目 2、2018
华为
届校园招聘软件开发岗笔试题 3、2017
华为
笔试题及答案 4、2017年
华为
笔试...
华为
C++
面试题
全集
华为
C++
面试题
全集 【下载地址】
华为
C
面试题
全集 本资源汇集了
华为
C++面试的各类真题,内容全面且实用,涵盖C++核心知识点及高频面试问题。无论您是初学者还是经验丰富的开发者,这份资料都能帮助您系统复习和提升编程技能,为
华为
面试做好充分准备。通过深入学习和练习,您将更有信心在面试中展现出色的编程能力,赢得心仪的职位。 ...
华为
Python 算法
面试题
华为
算法
面试题
""" 算法题: 提供一个序列,完成对这个序列的分割。要求分割后的两个序列彼此差值最小 实现函数,返回两个序列 """ def func(i): i.sort() if not i: return (([], [])) max_num = i[-1] max_two_num = ...
华为
算法高频
面试题
!
2025届-2026届-2027届)找工作/实习的人群(研一/研二/大二-大四等),也强烈推荐刚入学的学生以及有考虑跳槽的工程师,早点为找工作做准备,锻炼刷题意识和能力。深度学习,机器学习,计算机视觉,图像处理,自然语言处理,SLAM,大数据,数据分析,自动驾驶,机器人,推荐系统,Java,C/C++和Python。、百度、字节跳动、美团、拼多多、京东、快手、商汤、旷视、滴滴、OPPO、VIVO、
华为
、小米、大疆、平安科技。,回答问题,分享
面试题
,分享面试心得,分享内推信息,分享学习资料等。
C语言
面试题
大汇总之
华为
面试题
C语言
面试题
大汇总之
华为
面试题
去发现同类优质开源项目:https://gitcode.com/ 简介 本仓库提供了一份针对C语言
面试题
的宝贵资料——《C语言
面试题
大汇总之
华为
面试题
.pdf》。该资料涵盖了
华为
面试中常见的C语言
面试题
目,是准备C语言相关职位面试者的必备资源。 内容
华为
面试中常见的C语言基础题目 面试中涉及的高级C语言编程技巧 实战
面试题
及解题思路 使用说明 下载本资源后,请...
C语言
70,040
社区成员
243,237
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章