sort函数能排负数吗,sort函数菜鸟
太难理解了!js sort函数详细解释!!
sort函数执行时,会依次循环把数组里的两个数传递给函数f,这时候f的参数a和b就分别是传入的两个数,然后分别求出a和b除以2的余数(实际上就是判断a和b是奇数还是偶数,0是偶数,1是奇数)。如果a是偶数,函数f就返回1(或其他任何大于0的数),如果a是奇数且b是偶数就返回-1(或其他任何小于0的数)。sort函数根据f的返回值来对两个数进行排序,如果是大于0的数,就把两个数的值对调,如果是0或小于0的数则不做任何处理。
这样的话,当数组中的所有元素都两两处理完毕后,最终就会形成奇数在前偶数在后的情况了。
Js中的数组sort()排序问题
当两个数相等时,换位置和不换位置结果都一样,所以return 0确实没什么意义,但总不能把0排除在外吧,所以其实把0作为正数或负数处理都可以。
其实你的比较函数不用搞这么复杂的,这样即可:
function?compare(v1,v2){
????return?v1-v2;
}
同理,如果要从大到小排列就这样:
function?compare(v1,v2){
????return?v2-v1;
}
C语言正负重新排列
这样的就可以了,vs通过调试了
#include stdio.h
void main()
{
int num[10] = {0};
int tempi = 0;
void sortbysign(int *num, int count);
printf("输入10个整数:\n");
for(tempi = 0; tempi 10; tempi++)
{
scanf("%d", num[tempi]);
}
sortbysign(num, 10);
printf("排列后结果为:\n");
for(tempi = 0; tempi 10; tempi++)
{
printf("%d\n", num[tempi]);
}
flushall();
getchar();
}
void sortbysign(int *num, int count)
{
int tempi = 0;
int tempj = 0;
int tempnum = 0;
for(tempi = 0, tempj = 1; tempj count; tempj++)
{
if(num[tempj] 0)
{
tempnum = num[tempj];
num[tempj] = num[tempi];
num[tempi] = tempnum;
tempi++;
}
}
}