我有一个练习,我必须改进一个算法。该算法采用一个数组并将偶数放在左侧(SORTED),将赔率放在右侧(NOT-SORTED)。该算法效率低下,因此我必须对其进行改进。
这是练习的原始代码,我必须“改进”的代码:
public void what (int [] arr) {
int temp;
for (int i=0; i<arr.length; i++)
if (arr[i]%2 == 0) {
temp = arr[i];
for (int j=i; j>0; j--)
arr[j] = arr[j-1];
arr[0] = temp;
}
}
我想在这个练习中实现快速排序算法,但问题是我不知道如何使用枢轴:通常,枢轴是中位数,数组的一半较小,另一半较大。
这里的问题是左边部分必须是偶数,而右边部分必须是赔率。
我必须以低于 O(n^2) 的效率实现这种“排序”。
有任何想法吗?
谢谢!