快速排序的简单应用及回调函数的初步理解
来源:互联网 发布:windows密码破解工具 编辑:程序博客网 时间:2024/06/06 09:43
/*快速排序的简单应用及回调函数的初步理解注:只是应用快速排序的算法回调函数: 回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数就是允许用户把需要调用的方法的指针作为参数传递给一个函数,以便该函数在处理相似事件的时候可以灵活的使用不同的方法。(摘自百科)利用快速排序一个整型数组,一个浮点型数组,一个字符串数组。*///—、快速排序实现整型数组排序:#include<stdio.h>#include<stdlib.h>int int_cmp(const void *elem1, const void *elem2)//int_cmp就是回调函数{ return *(int *)elem1-*(int *)elem2;//只要求返回一个正整数或者负数或者零,所以直接可以用指针进行运算。必须先将void *轻质转换才能运算}int main(){ int arr[] = {1,3,5,7,9,2,4,6,8,0}; int i=0; int sz=sizeof (arr)/sizeof(arr[0]); qsort(arr,sz, sizeof(int ),&int_cmp);//int_cmp前面加不加&都可以,因为函数名就是地址,加上&增强程序的可读性。 for(i=0;i<sz;i++) printf( "%d ",arr[i]); system( "pause"); return 0;}//二、实现一个浮点型数组#include<stdio.h>#include<stdlib.h>int float_cmp(const void *elem1, const void *elem2){ if((*(float *)elem1>*(float *)elem2)) return 1; else if ((*(float *)elem1==*( float *)elem2)) return 0; else return -1;}int main(){ float arr[] = {0.2f, 1.5f, 9.0f, 8.8f, 0.0f}; int sz = sizeof (arr)/sizeof(arr[0]); int i = 0; qsort(arr, sz, sizeof(float ), &float_cmp); for(i=0; i<sz; i++) { printf( "%f\n", arr[i]); } system( "pause"); return 0;}//三、实现一个字符串数组#include<stdio.h>#include<string.h>#include<stdlib.h>int str_cmp(const void *elem1, const void *elem2){ return strcmp(*(char **)elem1, *(char **)elem2);}int main(){ char *arr[]={"abcdefgh" ,"abdcefg", "bbbbb"}; int i=0; int sz = sizeof (arr)/sizeof(arr[0]); qsort(arr,sz, sizeof(char *),str_cmp);//str_cmp的地址传给qsort for(i=0;i<sz;i++) { printf( "%s ",arr[i]); } system( "pause"); return 0;}
1 0
- 快速排序的简单应用及回调函数的初步理解
- java回调函数的初步理解
- js回调函数的理解及简单实例
- 关于回调函数的简单理解
- 回调函数的理解及运用
- 回调函数的简单应用
- 回调函数的简单应用
- 回调函数的分析及应用
- 回调函数的分析及应用
- 回调函数的理解
- 回调函数的理解
- 回调函数的理解
- 回调函数的理解
- 回调函数的理解
- 回调函数的理解
- 回调函数的理解
- 回调函数的理解
- 回调函数的理解
- 数据结构与算法简记:二叉查找树相关操作
- Android自定义控件----电商项目常用的跑马灯YluoMarqueeView
- ZOJ 3435 Ideal Puzzle Bobble(莫比乌斯反演)
- 在码神的第二个项目体验
- Cocos Creator JavaScript 快速入门(摘自官方文档)
- 快速排序的简单应用及回调函数的初步理解
- Android SDK Manage无法下载各个版本的APIs
- 聊聊
- hdu5787 数位dp 数位压缩
- brainfack语言解析器
- Android测试工具MonkeyRunner(Demo篇)
- 二进制的位运算
- Linux ubuntu下搭建wiki/mantis
- SPOJ 7001 VLATTICE - Visible Lattice Points(莫比乌斯反演)