C语言-关于快排(qsort)

#include 
#include 
#pragma warning (disable:4996)
int int_cmp(const void *p1, const void *p2)
{
 const int *x = (const int*)p1;
 const int *y = (const int*)p2;
 if (*x > *y)
 {
  return 1;
 }
 else if (*x < *y)
 {
  return -1;
 }
 else
 {
  return 0;
 }
}
int main()
{
 int a[] = { 6, 8, 12, 687, 2, 47, 23, 4 };
 int i = 0;
 int len = sizeof(a) / sizeof(a[0]);
 qsort(a,len,sizeof(int),int_cmp);
 for (; i < len; i++)
 {
  printf("%d ", a[i]);
 }
 putchar('\n');
 system("pause");
 return 0;
}

如下是比较的函数,有三个返回值,分别是-1,0,1;如果前一个数比后一个数大返回1,前一个数比后一个数小返回-1,相等返回0.使用qsort函数得出的将是升序。如果前一个数比后一个数大返回-1,前一个数比后一个数小返回1,相等返回0.使用qsort函数得出的将是降序

C语言-关于快排(qsort)_第1张图片

由下图可知,qsort函数含有四个参数,分别是数组的地址,数组长度,变量类型长度,以及一个比较的子函数。

你可能感兴趣的:(C语言-关于快排(qsort))