简单一道排序题,考倒多少读书人
2011-09-20 17:12
267 查看
从华为一道面试题来看看吧,原题大意是这样的:
有N个大小不等的自然数(1--N),请将它们由小到大排序。
要求程序算法:时间复杂度为O(n),空间复杂度为O(1)。
(请你做做看,时间20分钟)
有人这样做:
void sort(int e[], int n)
{
int i;
int t; /*临时变量:空间复杂度O(1)*/
for (i=1; i<n+1; i++) /*时间复杂度O(n)*/
{
t = e[e[i]]; /*下标为e[i]的元素,排序后其值就是e[i]*/
e[e[i]] = e[i];
e[i] = t;
}
}
void main()
{
#define MAX 10
int i, a[MAX+1];
printf("Input the number from 1 to %d:/n",MAX);
for (i=1; i<MAX+1; i++)
{
scanf("%d",&a[i]);
}
sort(a,MAX);
printf("/n====sort over====/n");
for (i=1; i<MAX+1; i++)
{
printf("%d ",a[i]);
}
printf("/n");
system("pause");
}
上述答案其实是不对的,请看下面:
void sort(int e[], int n)
{
int i;
int t; /*临时变量:空间复杂度O(1)*/
for (i=1; i<n+1; i++) /*时间复杂度O(n)*/
{
while(e!=i)
{
t = e[e]; /*下标为e的元素,排序后其值就是e*/
e[e] = e;
e = t;
}
} 这个while 实在是太强大了,心血沸腾,于是赶紧记录之。
有N个大小不等的自然数(1--N),请将它们由小到大排序。
要求程序算法:时间复杂度为O(n),空间复杂度为O(1)。
(请你做做看,时间20分钟)
有人这样做:
void sort(int e[], int n)
{
int i;
int t; /*临时变量:空间复杂度O(1)*/
for (i=1; i<n+1; i++) /*时间复杂度O(n)*/
{
t = e[e[i]]; /*下标为e[i]的元素,排序后其值就是e[i]*/
e[e[i]] = e[i];
e[i] = t;
}
}
void main()
{
#define MAX 10
int i, a[MAX+1];
printf("Input the number from 1 to %d:/n",MAX);
for (i=1; i<MAX+1; i++)
{
scanf("%d",&a[i]);
}
sort(a,MAX);
printf("/n====sort over====/n");
for (i=1; i<MAX+1; i++)
{
printf("%d ",a[i]);
}
printf("/n");
system("pause");
}
上述答案其实是不对的,请看下面:
void sort(int e[], int n)
{
int i;
int t; /*临时变量:空间复杂度O(1)*/
for (i=1; i<n+1; i++) /*时间复杂度O(n)*/
{
while(e!=i)
{
t = e[e]; /*下标为e的元素,排序后其值就是e*/
e[e] = e;
e = t;
}
} 这个while 实在是太强大了,心血沸腾,于是赶紧记录之。
相关文章推荐
- 简单一道排序题,考倒多少读书人!
- 简单一道排序题,考倒多少读书人!——从华为一道面试题浅谈计算机专业在校大学生该如何学习专业课程,信心百倍挑战就业!
- 简单一道排序题,考倒多少读书人!——从华为一道面试题浅谈计算机专业在校大学生该如何学习专业课程,信心百倍挑战就业!
- 简单一道排序题,考倒多少读书人!
- ACM-一道简单的排序题(HDOJ 1031)Design T-Shirt
- 一道简单的机试题,考倒多少人?
- R_Studio(关联)使用apriori函数简单查看数据存在多少条关联规则,并按支持度降序排序输出
- oracle 简单查询,限定查询及排序
- python 排序的简单实现
- 二分法简单排序和查找
- std list/vector sort 排序就这么简单
- [Java 11] ArraysDemo 数组简单的排序,填充操作
- 希尔(shell)排序简单分析
- 关于GridView中自定义分页、单选、多选、排序、自增列的简单应用(原创)
- 简单的排序算法——插入排序,选择排序,交换排序(冒泡排序,快速排序)
- Java 简单排序
- 也发一个自己实现的android简单文件选择器代码。支持多卡,排序
- 数据结构与算法学习-简单排序算法之插入排序
- 一道简单的编程题
- poj2367一道利用dfs退栈求拓扑排序的简单题