不知道为啥猎豹浏览器突然上csdn无法发文章,后来只有用谷歌浏览器写了。
如题给定一个数组将大于0的放在最右边,等于0的放在中间,大于0的放在最左边 这个其实用三指针就可以解决,三指针问题还是应用挺广的,比如说 链表的反转。 不多说了,直接上代码。
#include <iostream>
#include<algorithm>
using namespace std
;
int arr
[] = { -1, 2, 0, -5, 0, 8, -4 };
void sortNumbers(int arr
[],int len
)
{
int low
= 0, mid
= 0, high
= len
- 1;
while (mid
<= high
) {
if (arr
[mid
] < 0) {
swap(arr
[low
++], arr
[mid
++]);
}
else if (arr
[mid
] == 0) {
mid
++;
}
else
swap(arr
[mid
], arr
[high
--]);
}
}
int main()
{
sortNumbers(arr
, sizeof(arr
) / sizeof(arr
[0]));
for (int i
= 0;i
< sizeof(arr
) / sizeof(arr
[0]);i
++)
{
cout
<< arr
[i
] << " ";
}
}