sort函数能排负数吗,sort函数菜鸟

http://www.itjxue.com  2023-01-08 13:00  来源:未知  点击次数: 

太难理解了!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++;

}

}

}

(责任编辑:IT教学网)

更多

推荐金山WPS文章