有N个大小不等的自然数(1--N),请将它们由小到大排序。
要求程序算法:时间复杂度为O(n),空间复杂度为O(1)。
void sort(int arr[], int n)
{
int i;
int t; /*临时变量:空间复杂度O(1)*/
for (i=0; i {
t = arr[arr[i]-1]; /*下标为arr[i]的元素,排序后其值就是arr[i]*/
arr[arr[i]-1] = arr[i];
arr[i] = t;
}
}
阅读(1130) | 评论(0) | 转发(0) |