public static int[] sortBySign(int[] nums){
int startIndex = 0;
int endIndex = nums.length - 1;
while(startIndex < endIndex){
while(nums[startIndex] < 0){
startIndex++;
}
while(nums[endIndex] > 0){
endIndex--;
}
int temp = nums[startIndex];
nums[startIndex] = nums[endIndex];
nums[endIndex] = temp;
startIndex++;
endIndex--;
}
return nums;
}
我的代码适用于排序正数和负数,但我不确定如何对零进行排序。负片应在左侧,中间为零,右侧为正片。订单无关紧要。
答案 0 :(得分:1)
答案 1 :(得分:1)
实际上,您的代码没有正确if( foo )
doSomething();
正数,可能是因为它的sort
数量不足。为了对所有数字(包括零)进行排序,我建议回到冒泡排序,例如:
iterations
此外,我们不需要public static void sort(int[] array) {
for (int i = 0; i < array.length; i++) {
for (int j = 1; j < (array.length - i); j++) {
if (array[j - 1] > array[j]) {
int temp = array[j - 1];
array[j - 1] = array[j];
array[j] = temp;
}
}
}
}
任何内容,因为只对实际数组进行了更改。
修改强>
使用一个for循环对数组进行排序的另一种解决方案(即return
复杂度):
O(n)