c_cpp 给定一组正负整数,重新排列它,使得一端为正整数,另一端为负整数。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 给定一组正负整数,重新排列它,使得一端为正整数,另一端为负整数。相关的知识,希望对你有一定的参考价值。

// without keep the order
void rearrange(int A[], int N) {
    int low = 0, high = N-1;
    while(low < high) {
        while(low < N && A[low] < 0) low++;
        if(low == N) return;
        while(high >= 0 && A[high] > 0) high--;
        if(high < 0) return;
        swap(A[low], A[high]);
        low++;
        high--;
    }
}

// keep the order
void rearrange(int A[], int N) {
    int *B = new int[N];
    int j=0;
    for(int i=0; i<N; i++)
        if(A[i] < 0) B[j++] = A[i];
    for(int i=0; i<N; i++)
        if(A[i] > 0) B[j++] = A[i];
    for(int i=0; i<N; i++)
        A[i] = B[i];
    delete [] B;
}

以上是关于c_cpp 给定一组正负整数,重新排列它,使得一端为正整数,另一端为负整数。的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp 给定一组数字,返回所有可能的排列。例如,[1,2,3]具有以下排列:[1,2,3],[1,3,2],[2

第71题每组数据给定一棵二叉搜索树,请按中序遍历将其重新排列为一棵递增顺序搜索树

c_cpp 给定一组单词,返回给定集合中的anagrams集合

剑指Offer8:将数组排列成最大数

洗牌算法分析

c_cpp 给定一个整数数组,找到三元组,使得a ^ 2 + b ^ 2 = c ^ 2。