我有以下数组
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}
答案 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;
}