• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C语言使用stdlib.h库函数的二分查找和快速排序的实现代码

C语言使用stdlib.h库函数的二分查找和快速排序的实现代码

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c语言中stdlib.h,c语言stdlib.h,c语言中stdlib,c语言stdlib,c语言头文件stdlib.h等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

快速排序:

#define LENGTH(x) sizeof(x)/sizeof(x[0])

/**输出数组元素
*\param arr:指向数组的指针
*\param len:数组元素的个数
*/
void print(char (*arr)[10],int len)
{
    int i;
    for (i=0;i<len;i++)
    {
        printf("%s ",arr[i]);
    }
    printf("\n");
}

int main()
{
    char arr[][10]={"bac","bca","abc","acb","cba","cab"}; /* 定义二维字符数组*/
    char *key="bca";/* 要查找的字符串*/
    char *ptr=NULL; /* 字符指针*/
 // 输出未排序时字符数组的内容
    printf("before qsort :");
    print(arr,LENGTH(arr));
    /* 使用qsort对字符数组排序*/
    qsort((void *)arr,LENGTH(arr),sizeof(arr[0]),(int (*)(const void *,const void *))strcmp);
    /* 输出排序后字符数组的内容*/
    printf("after qsort :");
    print(arr,LENGTH(arr));
    /* 采用二分查找查找指定字符*/
    ptr=(char *)bsearch(key,arr,LENGTH(arr),sizeof(arr[0]),(int (*)(const void *,const void *))strcmp);
    if(ptr)
    {
        /* 找到*/
        printf("%s is in the array\n",key);
    }
    else/* 没找到*/
    {
        printf("%s isn't in the array\n",key);
    }
    return 0;
}
</div>
二分查找:

int numarray[] = {123, 145, 512, 627, 800, 933};

int numeric (const int *p1, const int *p2)
{
    return(*p1 - *p2);
}
int* lookup(int key)
{//返回值是指向key的地址
    int *itemptr;
    // The cast of (int(*)(const void *,const void*)) is needed to avoid a type mismatch error at
 // compile time
    itemptr = (int *)bsearch(&key, numarray, ArrayLen(numarray), \
                             sizeof(int), (int(*)(const void *,const void *))numeric);
    return (itemptr);
}
int main(void)
{
 int *p = lookup(512);
 if(NULL != p)
  printf("找到的key是%d,", *p);

 printf("key的下标是%d\n", (p - numarray));

    return 0;
}
</div>

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C语言使用stdlib.h库函数的二分查找和快速排序的实现代码

相关文章

  • 2017-05-28用while判断输入的数字是否回文数的简单实现
  • 2017-05-28C语言转义字符实例详解
  • 2017-05-28C 字符串数组排序的小例子
  • 2017-05-28在C语言中比较两个字符串是否相等的方法
  • 2017-05-28C++类URL编码和解码使用技巧
  • 2017-05-28C++结构体数组详细解析
  • 2017-05-28c语言stack(栈)和heap(堆)的使用详解
  • 2017-05-28利用反射获得类的public static/const成员的值实例
  • 2017-05-28Windows网络编程之winsock实现文件传输示例
  • 2017-05-28C++之CWnd窗口框架实例

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • MySQL的C语言API接口
    • c++中容器之总结篇
    • sdl显示一张bmp图片示例
    • C 语言基础教程(我的C之旅开始了)[三]
    • 解析四则表达式的编译过程及生成汇编代码
    • c++编写简单的计算器程序
    • C语言格式化输入输出函数详解
    • Cocos2d-x触摸事件实例
    • 指针与const限定符的使用分析
    • C与C++之间相互调用实例方法讲解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有