首先让我说我是 C 新手,所以我的方法是基本的。我正在尝试检查排序数组的旋转点。例如 (1 2 4 5 9) 变为 (5 9 1 2 4)。我试图将数组“拆分”为两个子数组,并检查一个从 [0] 开始并增加一,从 [4] 开始并减少一。这是我到目前为止所拥有的:
#define size 5
int main(void)
{
int x, i, j, start, end;
int array1[size]= {4, 8, 0, 1, 3};
start = 0;
end = size -1;
while(start < end)
{
if (array1[start] < array1[end])
start++;
end--;
我想我遇到的一些问题是我的方法是否良好(从外到内),或者我是否应该从中间开始并解决问题。另外,我将如何编码确定枢轴实际发生的位置。我在 SO 中看到了一些 C++ 的答案,但是我没有看到很多对 C 来说很清楚的答案,所以我想我会问。任何建议表示赞赏。