如何在C编程语言中将具有相同负数的正数带到一起

时间:2014-04-13 19:15:48

标签: c

我有以下数组

arr= {1, 2, 3, 4, 4, 5, 6, -2, -2,-3,-1,-5,-4,-7}

我想用C编程语言转换为以下格式

arr= {-1, 1, -2, -2, 2, -3, 3, -4, 4, 4, -5, 5, 6, -7}

3 个答案:

答案 0 :(得分:0)

使用abs函数查找绝对值,然后重新排列数组元素。您需要搜索阵列。

答案 1 :(得分:0)

只需使用特殊的排序函数对其进行排序,如果数组有整数:

int compare( const void* pa , const void* pb )
{
    int a = *( int* )pa ;
    int b = *( int* )pb ;

    if( abs(a) == abs(b) )
        return a - b ;

    return abs(a) - abs(b) ;
}

然后用这个函数和你的数组调用qsort()。

答案 2 :(得分:-1)

#include <stdio.h>
#include <stdlib.h>

int cmp(const void *a, const void *b){
    int x = *(const int *)a;
    int y = *(const int *)b;
    int ax = abs(x);
    int ay = abs(y);
    if(ax == ay)
        return x < y ? -1 : x > y;
    else
        return ax < ay ? -1 : ax > ay;
}

int main(void) {
    int arr[] = {1, 2, 3, 4, 4, 5, 6, -2, -2,-3,-1,-5,-4,-7};
    int i;
    int size = sizeof(arr)/sizeof(*arr);
    qsort(arr, size, sizeof(int), cmp);
    for(i=0;i<size;++i)
        printf("%d ", arr[i]);
    return 0;
}