c语言 快速排序 和 二分 查找 模型
来源:互联网 发布:如何修改网卡mac地址 编辑:程序博客网 时间:2024/06/07 13:21
引言:
c语言中 stdlib 自定义了一个 qsort 快速排序函数
模型:
int cmp(const void *a,const void *b);
qsort(s,n,sizeof(s[0]),cmp);
示例代码:
//#include<stdio.h>#include<stdlib.h>int cmp(const void* a, const void* b){ return *((int*)a) - *((int*)b);}//浜屽垎鏌ユ壘绠楁硶int search(int* arr, int arr_len, int value){ int index = 0; int min = 0; int max = arr_len -1; int middle = 0; if(arr[min] == value) return min; else if (arr[max] == value) return max; while(min < max) { middle = (min + max)/2; if(arr[middle] > value) max = middle -1; else if(arr[middle] < value) min = middle + 1; else return middle; }}int main(){ int a[] = {5,4,1,3,10,6,22,98,76,35}; qsort(a, sizeof(a)/sizeof(int), sizeof(int), cmp); int i =0; for(i; i< sizeof(a)/sizeof(int); i++) printf(" %2d, ", a[i]); printf(" \n"); int index = search(a, sizeof(a)/sizeof(int), 35); printf("index=%d, num=%d\n", index, a[index]);}
//结构体的 快速排序
#include<stdio.h>#include<string.h>typedef unsigned int uint32_t;typedef char uint8_t;typedef unsigned short uint16_t;typedef struct _BOOK{ char name[32]; int price;}Book;typedef struct _YOUXI{ int num; Book book[4];}YouXi;int cmp(void* a, void* b){ return ((YouXi*)a)->num - ((YouXi*)b)->num;}int main(){ YouXi you[4] = {{1,{"luchenfei", 32}}, {4,{"chunchun", 37}}, {3,{"lili", 39}}, {2,{"mingming", 34}}}; int i =0; for(i; i<4 ;i++) { printf("num=%d, name=%s, price=%d\n", you[i].num, you[i].book->name, you[i].book->price); }#if 1 qsort(you, 4, sizeof(YouXi), cmp); i =0; for(i; i<4 ;i++) { printf("num=%d, name=%s, price=%d\n", you[i].num, you[i].book->name, you[i].book->price); }#endif}
二分查找 + 快速 排序 在 具体应用时候 还是很不错一个 算法, 比如 解析 地理信息库, ip段 和 地址的映射 关系, 用ip 的开始ip 快排, 然后在 用二分 去查找。。
:关于 qsort c语言的 不同类型 double, 结构体 , 字符串 排序 参见博客: http://blog.sina.com.cn/s/blog_5155e8d401009145.html
0 0
- c语言 快速排序 和 二分 查找 模型
- 快速排序和二分查找算法的实现C语言
- C语言 冒泡排序和二分查找
- c语言快速排序与二分查找算法
- C语言使用stdlib.h库函数的二分查找和快速排序程序
- 快速排序 和 二分查找
- 二分查找和快速排序
- 二分查找,希尔排序和快速排序
- C语言:冒泡排序和二分查找混合
- C语言:编写查找和排序函数(二分查找,冒泡排序,选择排序法)
- 快速排序模板和二分查找
- 字符串的快速排序和二分查找
- 二分查找程序算法和快速排序
- 二分查找、快速排序对比和详解
- php 快速排序和二分查找
- 快速排序和二分查找的练习
- C语言:顺序查找和二分查找
- C语言中的排序、二分查找
- noip2014
- Unity3D–Texture图片空间和内存占用分析
- Swift教程之循环语句
- 社説 20150710 参院選制度改革 「合区」の導入もやむを得ない
- C# NameValueCollection集合
- c语言 快速排序 和 二分 查找 模型
- [Objective-C] Cocoa's Target-Action Pattern
- Linux register 关键字简介
- Android 升级ADT到22第三方Jar包导致的ClassNotFoundException和NoClassDefFoundError异常解决
- javascript---检测字符长度包括中文
- Swift教程之条件语句
- OC和DC的比较
- VS2012 出错,新建项目提示 未找到与约束ContractName Microsoft.VisualStudio.Text.ITextDocumentFactoryService
- 提高日志质量的 5 大技巧