给定一个数组将大于0的放在最右边,等于0的放在中间,大于0的放在最左边

    科技2023-12-01  77

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