C语言快排函数qsort()_c语言快速排序库函数

收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
img
img

如果你需要这些资料,可以戳这里获取

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

return *(int*)a - *(int*)b; //由小到大排序
//return \*(int \*)b - \*(int \*)a; 由大到小排序

}



cmp函数的返回值,<0(不进行置换),>0(进行置换),0(不进行置换)。


首先,我们先来手动实现一下快排。 



#include <stdio.h>

int a[100], n, temp;

void QuickSort(int h, int t)
{
if(h >= t)
return;
int mid = (h + t) / 2, i = h, j = t, x;
x = a[mid];
while(1)
{
while(a[i] < x)
i++;
while(a[j] > x)
j–;
if(i >= j)
break;
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
a[j] = x;
QuickSort(h, j - 1);
QuickSort(j + 1, t);
return ;
}

int main()
{
int i;
scanf(“%d”, &n);
for(i = 0; i < n; i++)
scanf(“%d”, &a[i]);
QuickSort(0, n - 1);
for(i = 0; i < n; i++)
printf("%d ", a[i]);
return 0;
}


接着,是对int型数组进行快排。



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

int s[10000], n, i;

int cmp(const void *a, const void b)
{
return (
(int *)a - *(int *)b);
}

int main()
{
scanf(“%d”, &n);
for(i = 0; i < n; i++)
scanf(“%d”, &s[i]);

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

 for(i = 0; i < n; i++) 
     printf("%d ", s[i]);

 return 0;

}


double型。



#include <stdio.h>
#include <stdlib.h>
double s[1000];
int i, n;

int cmp(const void * a, const void * b)
{
return(((double)a - (double)b>0)?1:-1);
}

int main()
{
scanf(“%d”, &n);
for(i = 0; i < n; i++)
scanf(“%lf”, &s[i]);

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

 for(i = 0; i < n; i++) 
     printf("%lf ", s[i]);

 return 0;

}


char型。



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

char s[10000], i, n;
int cmp(const void *a,const void b)
{
return (
(char *)a - *(char *)b);
}

int main()
{
scanf(“%s”, s);
n = strlen(s);
qsort(s, n, sizeof(s[0]), cmp);

 printf("%s", s);
 return(0);

}


struct型。



#include <stdio.h>
#include <stdlib.h>
struct node
{
double date1;
int no;
} s[100];
int i, n;
int cmp(const void *a,const void *b)
{
struct node *aa = (struct node *)a;
struct node *bb = (struct node *)b;
return (((aa->date1) > (bb->date1)) ? 1 : -1);
}

int main()
{
scanf(“%d”, &n);
for(i = 0; i < n; i++)
{
s[i].no = i + 1;
scanf(“%lf”, &s[i].date1);
}
qsort(s, n, sizeof(s[0]), cmp);

 for(i = 0; i < n; i++)
     printf("%d %lf\n", s[i].no, s[i].date1);

 return(0);

}


对结构体排序,加入no来使其稳定(即data值相等的情况下按原来的顺序排)。



#include <stdio.h>
#include <stdlib.h>
struct node
{
double date1;

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

如果你需要这些资料,可以戳这里获取

涵盖了95%以上物联网嵌入式知识点,真正体系化!**

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

如果你需要这些资料,可以戳这里获取

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言数组排序函数qsort是标准函数,用于对数组进行排序。它的使用方法是通过传入一个比较函数来指定排序的规则。在给出的代码中,我们可以看到使用qsort函数对一个整型数组进行升序排序的例子。\[1\] 为了实现qsort函数的功能,我们可以使用一种较为简单的排序算法,比如冒泡排序算法来模拟实现一个具有排序数组、字符串、结构体等功能的bubble_sort函数。\[2\]这个函数的参数可以仿照qsort函数的参数,包括要排序的数组的起始地址、元素个数、每个元素的大小以及一个比较函数。\[3\] 具体实现bubble_sort函数函数体可以根据冒泡排序算法来编写,通过比较相邻的元素并交换位置来实现排序排序的规则可以通过比较函数来指定,根据需要可以实现升序或降序排序。 总结起来,qsort是C语言标准中的数组排序函数,可以通过传入比较函数来指定排序规则。如果想要模拟实现类似功能的排序函数,可以使用一种简单的排序算法,比如冒泡排序,并根据需要实现相应的比较函数。 #### 引用[.reference_title] - *1* *2* *3* [【C语言qsort()函数详解:能给万物排序的神奇函数](https://blog.csdn.net/weixin_72357342/article/details/130628874)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值