- 論壇徽章:
- 0
|
。。。不知道先和0比較有啥子意義沒(méi)?
ps:這個(gè)不是快排函數(shù),只是給上面那個(gè)qsort用來(lái)比較而已?炫攀莙so ...
c04n05 發(fā)表于 2011-09-27 14:56 ![]()
做了個(gè)測(cè)試,大致上明白了。
axel中的speed其實(shí)是訪問(wèn)的時(shí)間,時(shí)間越大,訪問(wèn)速度越慢,因此,排序的時(shí)候,如果時(shí)間不為負(fù)值(speed > 0)(負(fù)值表示獲取速度失敗)的話,排序結(jié)果應(yīng)該是speed小的在前面,speed大的
在后面.
獲取速度失敗的連接,從理論上來(lái)說(shuō)應(yīng)該排在最后面,在axel中,作者對(duì)于獲取速度失敗的連接是這樣排序的。
- SPEED_DONE < SPEED_ERROR < SPEED_ACTIVE
復(fù)制代碼 我想,對(duì)于獲取速度失敗的連接來(lái)說(shuō),他們之間的排序關(guān)系已經(jīng)不重要了,重要的是有速度的連接按照從小到大的順序排在他們前面就行。呵呵。
下面是我按照作者的排序方式寫(xiě)的一個(gè)測(cè)試,正好闡述了上面的所有意思.
- 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;
- }
復(fù)制代碼 運(yùn)行結(jié)果是: |
|