C++ qsort函数用法实例

qsort函数是对快排的实现,可以对各种数据结构的数组形式进行排序,不过需要自己来给出该数据结构的比较函数;下面仅以int和cstring为例来描述其用法

int型:

  #include <stdio.h>
  #include <stdlib.h>


  int intcmp(const void* it1, const void* it2)
  {
      return *(int*)it1 - *(int*)it2;
  }

  int main()
  {
      int a[3] = {3, 1, 2};
      qsort(a, 3, sizeof(int), intcmp);
      printf("%d\t%d\t%d\n", a[0], a[1], a[2]);

      return 0;
  }

 

cstring型:

  #include <stdio.h>
  #include <stdlib.h>
  #include <string.h>

  #define ARRN 3

  int cstring_cmp(const void *a, const void *b)
  {
      const char **ia = (const char **)a;
      const char **ib = (const char **)b;return strcmp(*ia, *ib);
  }


  int main()
  {
      char a[ARRN][10] = {"3456789", "234567", "4567"};
      char* p[ARRN];
      for (int i = 0; i < ARRN; i++)
      {
          p[i] = a[i];
      }

      printf("%s\t%s\t%s\n", p[0], p[1], p[2]);
      qsort(p, 3, sizeof(char*), cstring_cmp);
      printf("%s\t%s\t%s\n", p[0], p[1], p[2]);

      return 0;
  }

容易出错的地方就是:

const char **ia = (const char **)a;
const char **ib = (const char **)b;
仅仅将数组的指针传入

posted on 2012-04-12 21:04  aho  阅读(2283)  评论(0编辑  收藏  举报

导航