一个未排序整数数组,有正负数,重新排列使负数排在正数前面,并且要求不改变原来的 相对顺序 比如: input: 1,7,-5,9,-12,15 ans: -5,-12,1,7,9,15 要求时间复杂度O(N),空间O(1) 。
时间:2014-06-07 00:17:16
收藏:0
阅读:350
#include <iostream> using namespace std; void mSort(int *arr, int iLen) { int i, j, k, tmp; for(i = 0, j = 0; i < iLen; i++) { if (arr[i] < 0) { tmp = arr[i]; for(k = i; k > j; k--) arr[k] = arr[k - 1]; arr[j++] = tmp; } } } int main() { int arr[] = {1,7,-5,9,-12,15}; // int iLen = sizeof(arr) / sizeof(int); int i; int iLen = 6; cout<<"输入"<<iLen<<"个数"<<endl; for(i = 0; i < iLen; i++) cin>>arr[i]; cout << "排序前数组为: " << endl; for(i = 0; i < iLen; i++) cout << arr[i] << " "; cout << endl mSort(arr, iLen); cout << "排序后数组为: " << endl; for(i = 0; i < iLen; i++) cout << arr[i] << " "; cout << endl // system("PAUSE"); return 0; }
评论(0)