qsort

来自cppreference.com
跳转到: 导航, 搜索

语法:

    #include <cstdlib>
    void qsort( void *buf, size_t num, size_t size, int (*compare)(const void*, const void *) );

qsort函数对 buf (它包含 num 个项,每一项大小为 size)进行排序,使用 Quicksort. compare 函数用来比较 buf 中的项,它应该在第一个参数小于第二个参数时返回负值,相等时返回零,大于时返回正值。qsort() 以升序方式对 buf 进行排序。

例如,下面的代码使用qsort排序一个整数数组:

   int compare_ints( const void* a, const void* b ) {  // 比较函数
     int* arg1 = (int*) a;
     int* arg2 = (int*) b;
     if( *arg1 < *arg2 ) return -1;
     else if( *arg1 == *arg2 ) return 0;
     else return 1;
   }
 
   int array[] = { -2, 99, 0, -743, 2, 3, 4 };
   int array_size = 7;
 
   ...
 
   printf( "Before sorting: " );
   for( int i = 0; i < array_size; i++ ) {
     printf( "%d ", array[i] );
   }
   printf( "\n" );
 
   qsort( array, array_size, sizeof(int), compare_ints );
 
   printf( "After sorting: " );
   for( int i = 0; i < array_size; i++ ) {
     printf( "%d ", array[i] );
   }
   printf( "\n" );

运行后,显示以下输出:

   Before sorting: -2 99 0 -743 2 3 4
   After sorting: -743 -2 0 2 3 4 99

相关主题: bsearch, stl/algorithm/sort

个人工具
名字空间
操作
导航
工具箱
其他语言