快排函数的使用语法


以对整型数组排序为例:


头文件

#include<stdlib.h>


函数体

intcmp(const void *a, const void *b)
{
r
eturn(*(int *)a-*(int *)b);

主函数

void main()

{ .int s[100];

 qsort(s,n,sizeof(s[0]),cmp);}

PS:

1、如果排序的是字符型数组

则在函数体内return(*(int *)a-*(int *)b); 改成 return(*(char *)a-*(char*)b); 

其他类型同理


2、要对其从s[i]开始的m个元素进行排序,只需要在第一个和第二个参数上进行一些修改:qsort(&s[i],m,sizeof(s[i]),cmp);

代码示例:

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

int comp(const void *a,const void *b);//函数声明

int main( )
{
   int i;
   int a[10]={21,56,78,12,36,58,69,44,23,11};
  
     
   qsort( a, 10, sizeof(int),comp);//调用qsort(),其中第一个参数是数组名字,第二个参数是数组元素个数,
                                  //第三个参数是元素所占字节数,第四个是比较方式

  
   for( i = 0; i < 10; ++i )
      printf( " %d  ", a[i] );
   printf( "\n" );
   return 0;
}

int comp(const void* a,const void* b)//定义数据的比较方式是从小到大排序。
{
   int *x=(int *)a;
   int *y=(int *)b;
   return *x-*y;
} 


原文地址:https://www.cnblogs.com/cszlg/p/2910533.html