【算法】重新排序数组中正数和负数

排序正数和负数

这里有很多可行的解决方法,我们可以将正数和负数分离,然后将正数和负数依次交换。

原地址在这
https://www.geeksforgeeks.org/rearrange-positive-and-negative-numbers-publish/

 void rearrange(std::vector<int>& arrs) { //负数在前 正数在后 int j = -1; for (int i = 0; i < arrs.size(); ++i) { if (arrs[i] < 0) { ++j; cout << arrs[i] << " swap " << arrs[j] << endl; std::swap(arrs[i], arrs[j]); } print(arrs); } print(arrs); cout << "-------------------------" << endl; //正数开头pos int pos = j + 1; int swappos = 0; //条件:正数没到头 交换Index不能超过pos(否则剩下的都是无意义的交换) while (pos < arrs.size() && swappos < pos && arrs[swappos] < 0) { cout << arrs[swappos] << " swap " << arrs[pos] << endl; std::swap(arrs[swappos], arrs[pos]); ++pos; swappos += 2; print(arrs); } print(arrs); } 

《【算法】重新排序数组中正数和负数》

    原文作者:排序算法
    原文地址: https://blog.csdn.net/gx864102252/article/details/82793929
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞