<分区>
我编写了以下 C99 代码来对固定数组执行快速排序。但是,在打印初始数组后,出现段错误。我现在没有任何调试器,我正在使用 KWrite,然后使用终端来编译和运行。这是代码。
#include <stdio.h>
#define LEN 8
int arr[8] = {3,5,7,1,2,4,6,8};
void printarr()
{
printf("\n");
for (int i = 0; i<LEN; i++)
printf("\t %d", arr[i]);
printf("\n");
}
void quicksort(int _left,int _right)
{
int left = _left;
int right = _right;
int pivot = (left+right)/2;
while (left<=right)
{
while(pivot>arr[left])
left--;
while (pivot<arr[right])
right++;
if(left<=right)
{
int temp = arr[right];
arr[right] = arr[left];
arr[left] = arr[temp];
left++;
right--;
}
}
if (_left<right)
quicksort(_left, right);
else
quicksort(left, _right);
}
int main()
{
int left = 0, right = LEN-1;
printf("Unsorted array:");
printarr();
quicksort(left,right);
printf("Sorted array:");
printarr();
}
请看一下,让我知道是哪部分代码导致了这个问题。