#include <iostream>
using namespace std;
void txsort(int* arr, int len) {
if (!arr || len == 1) {
return;
}
int negCount = 0;
for (int i = 0; i < len; ++i) {
if (arr[i] < 0) {
negCount++;
}
}
int swapingId = 0;
int fixNegId = 0;
int toSwapId = 0;
for (int i = 0; i < len; ++i) {
swapingId = (i - fixNegId) % (negCount - fixNegId) + fixNegId;
toSwapId = i + negCount - fixNegId;
/*arr[swapingId] < 0说明此处的负数未固定,
* 将带交换元素下标定位至待固定元素下标
*/
if (arr[swapingId] < 0) {
toSwapId = fixNegId;
fixNegId++;
}
swap(arr[swapingId], arr[toSwapId]);
if (fixNegId == negCount) {
break;
}
}
}
一个未排序整数数组,有正负数,重新排列使负数排在正数前面,并且要求不改变原来的正负数之间相对顺序,比如: input: 1,7,-5,9,-12,15 ans: -5,-12,1,7,9,15 要求时
最新推荐文章于 2021-11-29 16:16:06 发布