本文共 763 字,大约阅读时间需要 2 分钟。
一个未排序整数数组,有正负数,重新排列使负数排在正数前面,并且要求不改变原来的正负数之间相对顺序。
比如: input: 1,7,-5,9,-12,15 ,ans: -5,-12,1,7,9,15 。且要求时间复杂度O(N),空间O(1) 。
没有什么很好的方法
#include#include #include using namespace std; void sort(int* arr, int length) { if(length < 1 || NULL == arr) { return; } int* p = arr; int* q = arr; int* pos = q; while(p <= arr + length - 1) { if(*p < 0) { swap(*p,*q); pos = q; while(pos < p) { ++pos; swap(*p,*pos); } ++q; } ++p; } } int main() { int arr[]={1,-1,3,4,-3,2,-5,9,-1,8}; sort(arr,10); for_each(arr,arr+10,[](int i){cout< <
转载地址:http://lbvvi.baihongyu.com/