下面的代码在C中进行快速排序。我尝试将相同的代码逻辑转换为java。但是,我无法为“partition(&arr[left+1],size-left-1)编写等效的Java代码语句;”在下面的分区函数中。有人可以帮忙吗?
#include<stdio.h>
int main()
{
int arr[8]={4,8,1,6,3,7,2,5};
partition(arr,8);//Initial Calling of partition function
int i;
for(i=0;i<8;i++)
printf("%d ",arr[i]);
return 0;
}
void partition(int arr[],int size)
{
if(size<2)
return;
int pivot=arr[rand()%size];
int left=0,right=size-1,temp=0;
while(left<right)
{
while(arr[left]<pivot)
left++;
while(arr[right]>pivot)
right--;
temp=arr[left],arr[left]=arr[right],arr[right]=temp;//swapping values
}
//partitioning and recursive calling
partition(arr,left);
partition(&arr[left+1],size-left-1);//The problem is to write an equivalent code for this
//line in Java
}
最佳答案
要摆脱指针,您需要通过参数指定开始和结束。定义您的功能如下:
void partition(int arr[],int start, int end)
而不是:
int left=0,right=size-1,temp=0;
做
int left=start,right=end,temp=0;
关于java - 递归中使用的 C 代码语句的等效 java 代码语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20454029/