【发布时间】:2021-06-30 13:53:23
【问题描述】:
我不知道如何解决它的复杂性等问题。如何知道它是否比其他排序算法更快?
我觉得很难找到它,因为我的数学有点差。
#include <stdio.h>
int func(int arr[])
{
int temp;
int numofarrays=9999;
for(int runtime=1; runtime<=numofarrays/2; runtime++)
{
for(int i=0; i<=numofarrays; i++)
{
if(arr[i] > arr[i+1])
{
temp=arr[i];
arr[i]=arr[i+1];
arr[i+1]=temp;
}
if(arr[numofarrays-i-1] > arr[numofarrays-i])
{
temp=arr[numofarrays-i-1];
arr[numofarrays-i-1]=arr[numofarrays-i];
arr[numofarrays-i]=temp;
}
}
}
for(int i=0; i<=9999; i++)
{
printf("%i\n",arr[i]);
}
}
int main()
{
int arr[10000];
for(int i=0; i<=9999; i++)
{
arr[i]=rand() % 10;
}
func(arr);
}
【问题讨论】:
-
你可以衡量它是否比其他算法更快。
-
因为您的排序函数使用嵌套循环(一个 for 循环在另一个循环中)。它的复杂度为 O(n^2)。您似乎正在使用冒泡排序算法。有很多other sorting algorithms that are way faster than bubble sort。
-
您的算法越界访问数组,这是未定义的行为。
标签: c algorithm sorting time-complexity big-o