我写了一个代码,它接受一个存储在数组中的n个数字的输入。然后,代码将从最低到最高排列这n个数字。我在使用我的交换功能来订购数字时遇到了麻烦。我的其他两个函数将调用交换函数,所以我将包含它以显示更多我正在做的事情。程序从最低到最高排序用户输入数组。 C编程
void swap(int array[], int index1, int index2) {
*array = index1;
index1 = index2;
index2 = *array;
}
void quicksort(int array[], int low, int high) {
if (low<high)
{
int pivot = partition(array, low, high);
quicksort(array, low, pivot - 1);
quicksort(array, pivot + 1, high);
}
}
int partition(int array[], int low, int high) {
int pivot = array[high];
int i = low;
int j;
for(j=low; j<high-1; j++)
{
if(array[j] == pivot)
{
swap(array,i,j);
i = i+1;
}
}
swap(array, i, high);
return i;
}
**** **** EDIT
我已经写,取入存储到数组n个数字的输入的代码。然后,代码将从最低到最高排列这n个数字。我在使用我的交换功能来订购数字时遇到了麻烦。我的其他两个函数将调用交换函数,所以我将包含它以显示更多我正在做的事情。
void swap(int array[], int index1, int index2) {
*array = index1;
index1 = index2;
index2 = *array;
}
void quicksort(int array[], int low, int high) {
if (low<high)
{
int pivot = partition(array, low, high);
quicksort(array, low, pivot - 1);
quicksort(array, pivot + 1, high);
}
}
int partition(int array[], int low, int high) {
int pivot = array[high];
int i = low;
int j;
for(j=low; j<high-1; j++)
{
if(array[j] <= pivot)
{
swap(array,i,j);
i = i+1;
}
}
swap(array, i, high);
return i;
}
谢谢。这比我所做的更好。在我的代码中仍然有一个错误,但我现在更接近完成。 – Shaunbaum
通过调试器一步一步通过 – pm100
我现在全部想出来了,再次感谢! – Shaunbaum