<address id="ousso"></address>
<form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
  1. C語言中qsort快速排序使用實例

    時間:2025-11-29 18:21:16 C語言

    C語言中qsort快速排序使用實例

      大家想知道在C語言中qsort是如何快速排序的嗎?下面小編為大家整理了C語言中qsort快速排序使用實例,希望能幫到大家!

      簡單的介紹如下。

      復制代碼 代碼如下:

      /*****************************

      qsort原型:

      void qsort( void *base, size_t num, size_t width,

      int (__cdecl *compare )(const void *elem1, const void *elem2 ) );

      base:數組首地址

      num: 數組元素個數

      width: 每個數組元素字節數

      compare:比較函數 注意類型轉換

      *****************************/

      #include

      #include /pic/p>

      #include /pic/p>

      #include /pic/p>

      int intcmp(const void*i1,const void *i2)

      {

      return *(int*)i1-*(int*)i2;

      }

      int doublecmp(const void *d1,const void *d2)

      {

      /pic/pic/p>

      double tmp=*(double*)d1 - *(double*)d2;

      if(fabs(tmp) < 0.000001)

      return 0;

      else

      return tmp>0 ? 1 : -1;

      }

      int stringcmp(const void *str1,const void *str2)

      {

      return strcmp(*(char**)str1,*(char**)str2);

      /*

      這里為什么是 *(char**)呢?比較函數的參數都是數組元素的地址。

      如果是 int[],那么其元素就是int.傳入的&int[i],那么要比較的話,void *i1轉換

      為 int*的在取值。一樣,對于字符串數組而言,char*s[]其內存放的就是各個串的首地址。

      char*.所以轉換為void *后。其為&(char*)。所以要從void *轉換回去比較。就要用到二級指針(char**)str1,

      確保str1進過一次尋址后,*str1后為char*.可參見msdn例子。

      */

      }

      void main()

      {

      printf("---------------------C中qsort使用方法(默認遞增)----------------------n");

      int a[]={1,2,6,8,10,7,9,40,12,6,7};

      printf("-------int[]數組qsort測試-------nbefore sort:n");

      for(int i=0;i!=sizeof(a)/sizeof(int);i++)

      printf("%d ",a[i]);

      qsort(a,sizeof(a)/sizeof(int),sizeof(a[0]),intcmp);

      printf("nafter sort:n");

      for(int i=0;i!=sizeof(a)/sizeof(int);i++)

      printf("%d ",a[i]);

      printf("n");

      printf("-------double[]數組qsort測試-------nbefore sort:n");

      double d[]={1.12,1.1236,1.36,1.2456,2.48,2.24123,-2.3,0};

      for(int i=0;i!=sizeof(d)/sizeof(double);i++)

      printf("%f ",d[i]);

      qsort(d,sizeof(d)/sizeof(double),sizeof(d[0]),doublecmp);

      printf("nafter sort:n");

      for(int i=0;i!=sizeof(d)/sizeof(double);i++)

      printf("%f ",d[i]);

      printf("n");

      printf("-------string: char*[]數組qsort測試-------nbefore sort:n");

      char *str[]={"hello","hi","you","are","baby"};

      for(int i=0;i!=sizeof(str)/sizeof(str[0]);i++)

      printf("%s ",str[i]);

      printf("nafter sort:n");

      qsort(str,sizeof(str)/sizeof(str[0]),sizeof(str[0]),stringcmp);

      for(int i=0;i!=sizeof(str)/sizeof(str[0]);i++)

      printf("%s ",str[i]);

      printf("n");

      }

    【C語言中qsort快速排序使用實例】相關文章:

    C語言中使用快速排序算法對元素排序的實例12-05

    C語言快速排序實例代碼02-26

    c語言中關于使用BF-KMP算法實例01-16

    C#排序算法之快速排序01-07

    C++選擇排序算法實例02-25

    C語言冒泡排序算法實例12-19

    c#快速排序算法11-16

    c++快速排序詳解10-26

    C 語言中宏的使用11-01

    <address id="ousso"></address>
    <form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
    1. 日日做夜狠狠爱欧美黑人