ver[SIZE]保存的是[iBegin,iBegin+SIZE-1]区间的值,且无重复,请以O(N)时间复杂度和O(1)空间复杂度进行排序
2006-08-05 11:01
501 查看
bool Sort(int *ver,int const SIZE,int const iBegin=0)
//ver[SIZE]保存的是[iBegin,iBegin+SIZE-1]区间的值,且无重复;
//以下以O(N)时间复杂度和O(1)空间复杂度对原数组进行排序
{
int iCount=0;
for (int i=0;iCount<SIZE&&i<SIZE;++i)
{
if (ver[i]==i+iBegin)
{
continue;
}
while (ver[i]!=i+iBegin)
{
swap(ver[i],ver[ver[i]-iBegin]);
++iCount;
}
++iCount;
}
return true;
}
//ver[SIZE]保存的是[iBegin,iBegin+SIZE-1]区间的值,且无重复;
//以下以O(N)时间复杂度和O(1)空间复杂度对原数组进行排序
{
int iCount=0;
for (int i=0;iCount<SIZE&&i<SIZE;++i)
{
if (ver[i]==i+iBegin)
{
continue;
}
while (ver[i]!=i+iBegin)
{
swap(ver[i],ver[ver[i]-iBegin]);
++iCount;
}
++iCount;
}
return true;
}
相关文章推荐
- 实现一个排序算法,对0~n-1范围内的n个不重复的无序数组进行排序,时间复杂度为O(n),空间复杂度为O(1)。
- 返回数组中任意某个重复的数字--时间复杂度O(n)空间复杂度O(1)
- n个无序整数,已知第i个数在排好序的序列中的位置为j,满足|i-j|<=K,请设计一种排序算法,对该序列进行排序。注:算法时间复杂度为O(nlgn)的得0分,复杂度为O(nk) 的得两分,总分是20分
- 排序1,2......n的无序数组,时间复杂度为o(n),空间复杂度为o(1)
- 对1...n,数组长度未知进行交换排序(无重复值,时间复杂度O(n), 空间复杂度O(1))
- N个大小不等的自然数排序,时间复杂度为O(n),空间复杂度为O(1)
- 对n个数字进行排序,其中两两不同的数字的个数为k,n远远大于k,而n的取值区间长度超过了内存的大小,时间复杂度最小
- 七种排序方法(稳定性、空间复杂度、时间复杂度)分析总结
- bit-map牛刀小试:数组test[X]的值全部在区间[1, 8000]中, 现要输出test中重复的数。要求:1. 不能改变原数组; 2.时间复杂度为O(X);3.除test外空间不超过1KB
- 桶排序 C# 0(1)的辅助空间,o(n)的时间复杂度进行排序,数据量有上万条。
- 算法稳定排序和非稳定排序、内排序和外排序、时间复杂度和空间复杂度
- 如何从存有1亿个电话号码的号码(8位电话号码)本中,检索出重复的电话号码,时间复杂度为O(n),空间复杂度为O(1)
- 排序总结-时间复杂度和空间复杂度
- 将数组排序,数组中所有的负整数出现在正整数前面(时间复杂度为 O(n), 空间复杂度为 O(1)).
- 在O(n log n)时间内使用常数空间复杂度对链表进行排序
- 有N个大小不等的自然数(1--N),请将它们由小到大排序。要求程序算法:时间复杂度为O(n),空间复杂度为O(1)。
- 数组中重复的数字(剑指offer)+时间复杂度O(n)空间复杂度O(1)的想法
- LeetCode 148. Sort List--O(nlogn)时间复杂度和常数空间复杂度给链表排序
- 时间复杂度和空间复杂度
- 【转】时间复杂度和空间复杂度详解