- 论坛徽章:
- 0
|
。。。不知道先和0比较有啥子意义没?
ps:这个不是快排函数,只是给上面那个qsort用来比较而已。快排是qso ...
c04n05 发表于 2011-09-27 14:56 ![]()
做了个测试,大致上明白了。
axel中的speed其实是访问的时间,时间越大,访问速度越慢,因此,排序的时候,如果时间不为负值(speed > 0)(负值表示获取速度失败)的话,排序结果应该是speed小的在前面,speed大的
在后面.
获取速度失败的连接,从理论上来说应该排在最后面,在axel中,作者对于获取速度失败的连接是这样排序的。
- SPEED_DONE < SPEED_ERROR < SPEED_ACTIVE
复制代码 我想,对于获取速度失败的连接来说,他们之间的排序关系已经不重要了,重要的是有速度的连接按照从小到大的顺序排在他们前面就行。呵呵。
下面是我按照作者的排序方式写的一个测试,正好阐述了上面的所有意思.
- int search_sortlist_qsort( const void *a, const void *b )
- {
- if( (*(int *)a)< 0 && (*(int *)b) > 0 )
- return( 1 );
- if( (*(int *)a) > 0 && (*(int *)b) < 0 )
- return( -1 );
- if( (
- *(int *)a) < *((int *)b) )
- return( -1 );
- else
- return( *((int *)a) > (*(int *)b) );
- }
- int main(int argc, char* argv[])
- {
- int a[] = {-3,4,6,-1,-2,9,10,20};
- qsort( a, 8, sizeof( int ), search_sortlist_qsort );
- for (int i = 0; i < 8; i++)
- cout << a[i] << " ";
- return 0;
- }
复制代码 运行结果是: |
|