快排函数qsort() 最短的文字,最快的学习

快排函数qsort()

最短的文字,最快的学习

头文件:stdlib.h

源码:

_CRTIMP __cdecl  void qsort
(void *, size_t, size_t, int (*)(const void *, const void *) );
void *  ->要排序的数组

size_t	->数组中的元素的个数

size_t	->数组中每个元素的大小(惯用sizeof()int (*)(const void *, const void *) ->确定排序的顺序 (注意:传入的为地址!)

简单举例:

#include <stdio.h>
#include <stdlib.h>
int compare(const void *a,const void *b){
	return *(int *)b - *(int *)a;	//从大到小
    // return *(int*)a - *(int*)b; 	//从小到大
}
int main(){
    int array[5]={4,3,5,1,2};
    qsort(array,5,sizeof(array[0]),compare);
    //输出
    return 0;
}

到这里,qsort()函数的基本使用已经没有问题了,你就可以尽情的使用。如果对compare()函数的使用有疑惑,请继续看阅读。

除此之外,qsort()函数不仅仅可以对int型排序,还可以对double,char,struct,字符串数组进行排序,如果有需要,请继续阅读。

疑问:

  1. 快排原型
  2. compare函数原理
  3. 其他类型的运用

解答:

1.举例

#include <stdio.h>
void my_qsort(int *a, int left, int right) { 
	if (left > right) {
		return;		//排除错误
	}
	int temp = a[left];
	int i = left;
	int j = right;
	int t;
	while (i != j) {
		while (i < j && a[j] >= temp) {
			j--;
		}
		while (i < j && a[i] <= temp) {
			i++;
		}
		if (i < j) {
			t = a[i];
			a[i] = a[j];
			a[j] = t;
		}
	}
	a[left] = a[i];
	a[i] = temp;
	my_qsort(a, left, i - 1); 
	my_qsort(a, i + 1, right); 
}
main(){
	int a[10]={6,4,6,1,2,5,2,8,9,0,};
	my_qsort(a,0,9);
	for(int i=0;i<10;i++){
		printf("%d ",a[i]);
	}
	
}

快排看不懂请看别的博主,本博主比较懒(有了qsort谁还要自己敲。。。)

2.compare原理

根据返回值决定顺序

< 0  	a前b后

= 0 	不变

> 0		b前a后

再深入理解就靠你自己了!!!

3.其他类型举例

持续更新中…敬请期待…

如果对你有帮助,点个赞不过分吧…
如果对你有帮助,点个赞不过分吧…
如果对你有帮助,点个赞不过分吧…
点赞才不会变懒!
点赞才不会变懒!
点赞才不会变懒!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值