社区
C语言
帖子详情
华为面试题
fidt982
2005-12-01 09:18:08
有1,2,....一直到n的无序数组,求排序算法,并且要求时间复杂度为O(n),空间复杂度O(1),使用交换,而且一次只能交换两个数.
//这是昨天在华为的面试题,楞是没做出来.
...全文
3633
133
打赏
收藏
华为面试题
有1,2,....一直到n的无序数组,求排序算法,并且要求时间复杂度为O(n),空间复杂度O(1),使用交换,而且一次只能交换两个数. //这是昨天在华为的面试题,楞是没做出来.
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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)
c语言
面试题
与c语言有关的
面试题
华为
笔试题
c语言
面试题
与c语言有关的
面试题
华为
笔试题 c语言
面试题
与c语言有关的
面试题
华为
笔试题 c语言
面试题
与c语言有关的
面试题
华为
笔试题 c语言
面试题
与c语言有关的
面试题
华为
笔试题 c语言
面试题
与c语言有关的
面试题
华为
笔试题 c语言
面试题
与c语言有关的
面试题
华为
笔试题 c语言
面试题
与c语言有关的
面试题
华为
笔试题 c语言
面试题
与c语言有关的
面试题
华为
笔试题 c语言
面试题
与c语言有关的
面试题
华为
笔试题 c语言
面试题
与c语言有关的
面试题
华为
笔试题
各个公司
面试题
(百度、
华为
、中兴、烽火科技等)
本文件包括了国内外各大IT企业(百度、
华为
、中兴、烽火科技等)的
面试题
目,可供向往这些企业的哥们们提供些参考
迅雷
华为
以及各大公司
面试题
以及面试技巧
集合了迅雷,
华为
等各大公司的
面试题
,以及面试技巧,请各位先收藏了,以后一定用得着
java
面试题
(笔试题)大集合,有
华为
,阿里巴巴,中信,IBM,oracle等知名大公司
这些
面试题
全部来自网络,收集成了8个txt文档。本人看了这些
面试题
,已经成功通过公司笔试和面试,现在已经就业了,希望这这方面希望自己经快通过的朋友都下了去看看,背背就什么问题都能回答了,java就是这么简单。
google 北电
华为
腾讯网易迅雷中兴试题及面试经验
大软件公司面试试题及面试经验。对面试很有作用。
C语言
70,023
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章