您的位置:首页 > 其它

对于非负整数0,1,2,....n-1,随机放入一个大小为n的一维数组中,调整元素顺序,辅助空间为O(1)

2013-08-23 09:21 375 查看
题目:

对于非负整数0,1,2,....n-1,随机放入一个大小为n的一维数组中,请用时间复杂度为O(n)的算法,把他们调整为0,1,2,3,....n-1的顺序,辅助空间为O(1),只允许用交换操作,一次只能交换两个元素位置

Code(C):

#include<stdio.h>
#include<stdlib.h>

void change(int *a,int len);

void main()
{
int a[] = {10,6,9,5,2,8,4,7,1,3};
int len = sizeof(a)/sizeof(int);
int i;
for(i = 0;i < len;i++)
printf("%d ",a[i]);
printf("\n");
printf("交换后的结果为\n");
change(a,len);
for(i = 0;i < len;i++)
printf("%d ",a[i]);
printf("\n");
}

void change(int *a,int len)
{
int i,temp;
for(i = 0;i < len;)
{
temp = a[i];
a[i] = a[temp-1];
a[temp-1] = temp;
if(a[i] == i+1)
i++;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐