gpt4 book ai didi

java - Java中如何统计mergesort和quicksort的操作?

转载 作者:行者123 更新时间:2023-11-30 05:51:29 25 4
gpt4 key购买 nike

我正在编写一个程序来计算合并排序和快速排序的操作。我不知道我应该把count++放在哪里; (计算操作)在。有人可以帮我解决这个问题吗?

这里是合并排序和快速排序的代码。

合并排序:

public void mergeSort(int [] data, int first, int n){

int n1;
int n2;

if (n>1) {
n1 = n/2;
n2 = n-n1;
mergeSort(data,first,n1);
mergeSort(data,first+n1,n2);
merge(data,first,n1,n2);
}

}//ends mergeSort method.

public void merge(int [] data, int first, int n1, int n2){
int [] temp = new int[n1+n2];
int copied = 0, copied1 = 0, copied2 = 0, i;

while((copied1<n1) && (copied2<n2)){

if(data[first+copied1] < data[first + n1 + copied2])
temp[copied++] = data[first + (copied1++)];
else
temp[copied++] = data[first + n1 + (copied2++)];
}

while (copied1<n1)
temp[copied++] = data[first + (copied1++)];
while(copied2<n2)
temp[copied++] = data[first + n1 + (copied2++)];

for (i=0;i<n1+n2;i++)
data[first+i] = temp[i];
}//ends merge method.

这是快速排序的代码:

public void quickSort(int data[], int left, int right){

int index = partition(data, left, right);
if (left < index - 1){
quickSort(data, left, index - 1);
}
if (index < right){
quickSort(data, index, right);
}
}//ends quickSort method.

int partition(int data[], int left, int right){

int i = left, j = right;
int tmp;
int pivot = data[(left + right) / 2];

while (i <= j)
{
while (data[i] < pivot)
i++;
while (data[j] > pivot)
j--;
if (i <= j)
{

tmp = data[i];
data[i] = data[j];
data[j] = tmp;
i++;
j--;
}
}
return i;
}//ends partition method.

最佳答案

你应该把 ++ 放在你有“操作”的地方。你所说的手术取决于你。我可以是比较、交换或每一行。您可以决定什么适合您。

关于java - Java中如何统计mergesort和quicksort的操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12679121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com