手机
当前位置:查字典教程网 >编程开发 >C语言 >C语言使用stdlib.h库函数的二分查找和快速排序的实现代码
C语言使用stdlib.h库函数的二分查找和快速排序的实现代码
摘要:快速排序:复制代码代码如下:#include#include#include#defineLENGTH(x)sizeof(x)/sizeof...

快速排序:

复制代码 代码如下:

#include <stdlib.h>

#include <stdio.h>

#include <string.h>

#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 arrayn",key);

}

else/* 没找到*/

{

printf("%s isn't in the arrayn",key);

}

return 0;

}

二分查找:

复制代码 代码如下:

#include<stdlib.h>

#include<stdio.h>

#define ArrayLen(arr) (sizeof(arr) / sizeof(arr[0]))

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的下标是%dn", (p - numarray));

return 0;

}

【C语言使用stdlib.h库函数的二分查找和快速排序的实现代码】相关文章:

C语言中函数与指针的应用总结

用c语言根据可变参数合成字符串的实现代码

C语言实现修改文本文件中特定行的实现代码

C语言中函数声明与调用问题

C++中用substr()函数消除前后空格的解决方法详解

用C# 实现鼠标框选效果的实现代码

k均值算法c++语言实现代码

C++ 模版双向链表的实现详解

冒泡排序的三种实现方法

C语言typedef与复杂函数声明问题的深入解析

精品推荐
分类导航