题目:
对于非负整数0,1,2,…n-1,随机放入一个大小为n的一维数组中,调整元素顺序,使其递增排序,辅助空间为O(1),时间复杂的O(n)
代码:
#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++;
}
}
一维数组的O(n)排序
本文介绍了一种特殊的排序方法,适用于非负整数构成的数组,并且能够实现O(n)的时间复杂度和O(1)的空间复杂度。通过实例演示了如何将乱序数组调整为递增有序数组。
3289

被折叠的 条评论
为什么被折叠?



