sort(排序) qsort(快排) bsearch(二分查找)
sort:
一、对int类型数组排序
int a[100];
int cmp ( int a , int b ) //不必强制转换
{
return a < b;//升序排列。
}
sort (a(数组名) , a+100(数组最后一个元素), cmp);
头文件 #include<algorithm>,属于C++中STL
qsort:
一、对int类型数组排序
int a[100];
int cmp ( const void *a , const void *b ) //此处必须强制转换
{
return *(int *)a - *(int *)b;//升序排列。
所以在前面的字符的值一定小于后面的字符。
那么,对于a b,如果a的值>b的值,就说明在字母表中a在b的后面
}
qsort(a(数组名),100(数组长度),sizeof(a[0])(数组元素的宽度),cmp); 头文件#include <stdlib.h>
bsearch :(一般与qsort连用)
以int 型数组为例
bsearch 返回一个地址
int *p;
- p = (int *)bsearch(&k(关键字地址), a(数组名), n(数组长度), sizeof(a[0]), cmp);//C++需要(int *)强制转换,C不用
- #include <stdio.h>
- #include <stdlib.h>
- int cmp(const void *p, const void *q)
- {
- return (*(int *)p - *(int *)q);
- }
- int main()
- {
- int a[1000001];
- int n,k,*p;
- while(~scanf("%d",&n))
- {
- for(int i = 0;i<n;i++)
- {
- scanf("%d",&a[i]);
- }
- scanf("%d",&k);
- qsort(a, n, sizeof(a[0]), cmp);
- p = bsearch(&k, a, n, sizeof(a[0]), cmp);
- (p == NULL) ? puts("NO") : puts("YES");
- }
- return 0;
- }
sort(排序) qsort(快排) bsearch(二分查找)的更多相关文章
- qsort 快排函数(C语言)
qsort 快排函数(C语言) 函数原型 void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, ...
- c语言中使用自带的qsort(结构体排序)+ 快排
c中没有自带的sort函数emm 不过有自带的qsort函数 (其实用法都差不多(只是我经常以为c中有sort 头文件要用 #include <stdlib.h> 一定要重新把指针指向的值 ...
- 排序 之 快排、归并、插入 - <时间复杂度>----掌握思想和过程
俗话说:天下武功无坚不破,唯快不破.对于算法当然也是要使用时间最短.占用空间最小的算法来实现了. 注意:我代码里面打的备注仅供参考,建议不要背模板(因为没有固定的模板),可以写一个数列按着代码跑两圈或 ...
- 普林斯顿大学算法课 Algorithm Part I Week 3 重复元素排序 - 三路快排 Duplicate Keys
很多时候排序是为了对数据进行归类,这种排序重复值特别多 通过年龄统计人口 删除邮件列表里的重复邮件 通过大学对求职者进行排序 若使用普通的快排对重复数据进行排序,会造成N^2复杂度,但是归并排序和三路 ...
- poj1007 qsort快排
这道题比较简单,但通过这个题我学会了使用c++内置的qsort函数用法,收获还是很大的! 首先简要介绍一下qsort函数. 1.它是快速排序,所以就是不稳定的.(不稳定意思就是张三.李四成绩都是90, ...
- 【js基础】js排序方法——快排+堆排+插排+选择排
快排 Array.prototype.fastSort = function(){ var arr = this; function sort(left, right, arr){ if( left ...
- Java 排序(快排,归并)
Java 排序有Java.util.Arrays的sort方法,具体查看JDK API(一般都是用快排实现的,有的是用归并) package yxy; import java.util.Arrays; ...
- 排序--QuickSort 快排
Quick の implementation 快排,就像它的名字一定,风一样的快.基本上算是最快的排序算法了.快排的基本思想是选择一个切分的元素.把这个元素排序了.所有这个元素左边的元素都小于这个元素 ...
- 排序之快排(JS)
快速排序(Quicksort)是对冒泡排序的一种改进. 它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分 ...
随机推荐
- M - Pots
You are given two pots, having the volume of A and B liters respectively. The following operations c ...
- ERP项目实施记录05
周四继续进行流程演练,把第一个销售订单的物料给领了出来,走完了"物流". 关于运用一个新系统大概会经历以下阶段: 未知--了解--熟悉--改善--依赖 未知:有期待.担心.抗拒,需 ...
- Python与金融量化分析----金融与量化投资
一:金融了解 金融:就是对现有资源进行重新的整合之后,进行价值和利润的等效流通. 金融工具: 股票 期货 黄金 外汇 基金 ............. 股票: 股票是股份公司发给出资人多的一种凭证,股 ...
- li下的ul----多级列表
<ul id="ul_Style1"> <li>第1级第1行</li> <li> <ul id="ul_Style2 ...
- TOP100summit:【分享实录-猫眼电影】业务纵横捭阖背后的技术拆分与融合
王洋:猫眼电影商品业务线技术负责人.技术专家.主导了猫眼商品供应链和交易体系从0到1的建设,并在猫眼与美团拆分.与点评电影业务融合过程中,从技术层面保障了商品业务的平稳切换,同时也是美团点评<领 ...
- css学习_css背景属性及其应用
css背景属性及其应用 1.背景 2.背景简写 3.背景透明(css3) 4.背景缩放(css3) 5.多背景图片(css3) 6.凹凸文字效果
- python字典查询功能
def fetch(data): print(' 查询功能') print('用户数据是',data) def add(): pass def change(): pass def delete(): ...
- {Django基础七之Ajax} 一 Ajax简介 二 Ajax使用 三 Ajax请求设置csrf_token 四 关于json 五 补充一个SweetAlert插件(了解)
Django基础七之Ajax 本节目录 一 Ajax简介 二 Ajax使用 三 Ajax请求设置csrf_token 四 关于json 五 补充一个SweetAlert插件(了解) 一 Ajax简介 ...
- [No000012A]WPF(2/7):布局,容器和布局转换[译]
概要 在上一篇文章中,我讨论了一些WPF应用的基础知识,它们是使用WPF的基本架构和内部结构.在本文中,我将讨论编写你的第一个WPF程序的基本的东西和怎么在你的窗口中布局控件.这是每一个想使用WPF的 ...
- [No0000C8]英特尔快速存储IRST要不要装
IRST (英特尔快速存储技术)Intel Rapid Storage Technology(简称IRST)又称英特尔快速存储技术. Intel Rapid Start Technolog同样是简称( ...