search的最后一个函数 search_sortlist,镜像站点按照速度排序

search的最后一个函数 search_sortlist,镜像站点按照速度排序


对搜索到的站点按照速度从大到小排序,也就是访问时间从小到大排序,而axel中speed的值就是这个访问时间间隔。

search_sortlist采用快速排序算法,当然compare函数要自己写的。
以下两个函数实现了这一切。
  1. void search_sortlist( search_t *results, int count )
  2. {
  3.         qsort( results, count, sizeof( search_t ), search_sortlist_qsort );
  4. }

  5. int search_sortlist_qsort( const void *a, const void *b )
  6. {
  7.         if( ((search_t *)a)->speed < 0 && ((search_t *)b)->speed > 0 )
  8.                 return( 1 );
  9.         if( ((search_t *)a)->speed > 0 && ((search_t *)b)->speed < 0 )
  10.                 return( -1 );
  11.         if( ((search_t *)a)->speed < ((search_t *)b)->speed )
  12.                 return( -1 );
  13.         else
  14.                 return( ((search_t *)a)->speed > ((search_t *)b)->speed );
  15. }
复制代码
关于函数
  1. search_sortlist_qsort
复制代码
的用意,请参考31楼的分析。

search部分的核心基本上搞定了

你可能感兴趣的:(search的最后一个函数 search_sortlist,镜像站点按照速度排序)