【发布时间】:2018-10-19 14:08:06
【问题描述】:
这个函数写对了吗?
当我尝试运行包含大量数组元素(例如 1000)的函数时,似乎出现了问题。
然后它似乎停止了。
int quick_sort(int n, int tablica[],int b, int a)
{
if(a==n-1 || n==0) return;
if(b==n-1)
{
b=0;
a++;
}
if(tablica[b]>tablica[b+1])
{
bufor=tablica[b];
tablica[b]=tablica[b+1];
tablica[b+1]=bufor;
}
b++;
return quick_sort(n,tablica,b,a);
}
【问题讨论】:
-
请花些时间联系read about how to ask good questions 和this question checklist。请尝试创建一个Minimal, Complete, and Verifiable Example,并将其展示给我们。最后推荐你learn how to debug your programs。
-
这根本不像是快速排序
-
您是否至少检查过您的数组索引没有超出范围? C 语言不会为你做这件事。另请显示minimal reproducible example
-
看起来这将对每个元素至少递归一次。这将使用大量的堆栈空间。
-
看起来这应该是某种冒泡排序,在这个实现中会递归 n² 次(n 是元素的数量)。相当深度的递归,并不是每个系统都能开箱即用地处理。
标签: c function recursion quicksort