不知道为啥猎豹浏览器突然上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] << " ";
}
}