gpt4 book ai didi

我可以提高这个选择排序算法的运行时间吗?

转载 作者:行者123 更新时间:2023-11-30 16:49:32 25 4
gpt4 key购买 nike

我一直在尝试编写自己的选择排序算法,并在随机生成的大小为 10000、50000 和 100000 的数组上对其进行测试。我的算法工作正常,但我试图让它尽快工作。在我的机器上,测试分别花费大约 0.45 秒、1.88 秒和 11.77 秒。有什么方法可以改进我的算法,使其运行得更快吗?

void SelectionSort(int array[], int len){

int temp,i,j,min,minpos;


for(j=0;j<len;j++){
minpos=j;

for(i=j+1;i<len;i++){

if(array[minpos]>array[i]){
minpos=i;
}
}

temp=array[j];
array[j]=array[minpos];
array[minpos]=temp;

}

}

最佳答案

如果一个数组只包含两个元素,那么由于外部循环的这种情况,它不会被排序

for(j=0;j<len-2;j++){
^^^^^^^

我认为如果在交换数组元素之前检查当前元素和最小元素是否相同,可以提高效率。

所以我想建议以下实现

void SelectionSort( int a[], size_t n )
{
for ( size_t i = 0; i < n; i++ )
{
size_t min = i;;

for ( size_t j = i + 1; j < n; j++ )
{
if ( a[j] < a[min] ) min = j;
}

if ( i != min )
{
int tmp = a[i];
a[i] = a[min];
a[min] = tmp;
}
}
}

关于我可以提高这个选择排序算法的运行时间吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42545824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com