C++ 实现排序问题:时间复杂度O(n),空间复杂度O(1)
  TEZNKK3IfmPf 2023年11月14日 24 0


  • 解决思路:
  • 1.先定义一个数组Arr 然后初始化大小为固定长度:注意:长度必须超过需要排序的数组的长度,不然就没意义了。
  • 2.数组初始化全为0.
  • 3.遍历需要排序的数组,然后将数组大小作为下标,进行叠加,次数进行叠加
  • 4.输出

代码:

#define SIZE  65536
void SuperSort(int * arr,int n)
{
int array_all[SIZE];
//初始化
for (int i = 0; i < SIZE;i++)
{
array_all[i] = 0;//初始化为0;
}
//进行排序
for (int i = 0; i < n; i++)
{
array_all[arr[i] + 100] = arr[arr[i] + 100]+1; //赋值次数,处理负数情况
}
//输出
for (int j = 0; j < SIZE; j++)
{
if (array_all[j]!=0)
{
for(int k = 0; k <array_all[j]; k++)
{
cout << j-100 << endl;
}
}
}
}

int _tmain(int argc, _TCHAR* argv[])
{
int array_[] = {6, 4, -3, 5, -2, -1, 0, 1, -9}; //定义一个定长数组
//采用排序,时间复杂度O(n),空间复杂度O(1)
SuperSort(array_,9);
system("pause");
return 0;
}

运行结果:

C++ 实现排序问题:时间复杂度O(n),空间复杂度O(1)


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月14日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   21天前   33   0   0 C++
  TEZNKK3IfmPf   21天前   23   0   0 指针C++
  TEZNKK3IfmPf   2024年05月31日   23   0   0 算法C++
TEZNKK3IfmPf