题目:
对于非负整数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++;
}
}