问题描述
如您所见,目前我在这个合并排序问题上遇到了麻烦,而且我不知道如何将升序程序转换为相同格式的降序,如果有人可以帮助我的话,那真的很适合您。我对这种分类过程并不陌生,并且随着时间的流逝我正在慢慢学习,目前我是一名学生。非常感谢您的帮助!
private static void mergeSort(int[] array,int low,int high)
{
if (high <= low)
return;
int mid = (low + high) / 2;
mergeSort(array,low,mid);
mergeSort(array,mid + 1,high);
merge(array,mid,high);
}
private static void merge(int[] array,int mid,int high)
{
int leftArray[] = new int[mid - low + 1];
int rightArray[] = new int[high - mid];
for (int i = 0; i < leftArray.length; i++)
leftArray[i] = array[low + i];
for (int i = 0; i < rightArray.length; i++)
rightArray[i] = array[mid + i + 1];
int leftIndex = 0;
int rightIndex = 0;
for (int i = low; i < high + 1; i++)
{
if (leftIndex < leftArray.length && rightIndex < rightArray.length)
{
if (leftArray[leftIndex] < rightArray[rightIndex])
{
array[i] = leftArray[leftIndex];
leftIndex++;
}
else
{
array[i] = rightArray[rightIndex];
rightIndex++;
}
}
else if (leftIndex < leftArray.length)
{
array[i] = leftArray[leftIndex];
leftIndex++;
}
else if (rightIndex < rightArray.length)
{
array[i] = rightArray[rightIndex];
rightIndex++;
}
}
}
解决方法
您需要做的就是更改将项目const NoneReChar = (str) => {
let tempArr = str.split('');
let start = tempArr[0];
while (true) {
tempArr.shift();
if (!tempArr.includes(start)) {
return start;
} else {
tempArr.filter(char => char !== start);
start = tempArr[0];
}
}
}
console.log(NoneReChar("aaaabbbeccc"))
与之比较的行
if (leftArray[leftIndex] < rightArray[rightIndex])
,
什么都没有真正改变。而不是这种比较
if (leftArray[leftIndex] < rightArray[rightIndex])
您需要进行此比较
if (leftArray[leftIndex] > rightArray[rightIndex])
其余代码保持不变。