zoukankan      html  css  js  c++  java
  • 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;

     

    [html] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. p = (int *)bsearch(&k(关键字地址), a(数组名), n(数组长度), sizeof(a[0]), cmp);//C++需要(int *)强制转换,C不用  

     

     

    [html] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. #include <stdio.h>  
    2. #include <stdlib.h>  
    3.   
    4. int cmp(const void *p, const void *q)  
    5. {  
    6.     return (*(int *)p - *(int *)q);  
    7. }  
    8.   
    9. int main()  
    10. {  
    11.     int a[1000001];  
    12.     int n,k,*p;  
    13. while(~scanf("%d",&n))  
    14. {  
    15. for(int i = 0;i<n;i++)  
    16. {  
    17.     scanf("%d",&a[i]);  
    18. }  
    19.       scanf("%d",&k);  
    20.   
    21.     qsort(a, n, sizeof(a[0]), cmp);  
    22.     p = bsearch(&k, a, n, sizeof(a[0]), cmp);  
    23.   
    24.     (p == NULL) ? puts("NO") : puts("YES");  
    25. }  
    26.     return 0;
    27. }   
  • 相关阅读:
    IBatis学习总结之动态拼sql
    IBatis学习总结
    帝都残暴的.net 之旅 (Martin Fowler 有留言哦)
    简洁实用的WordPress模板
    发现一位同行特牛
    app爬虫--mitmproxy用法梳理
    [转]数据库设计中的14个技巧
    [转] sql数据类型 varchar与nvarchar的区别
    web工作原理
    Xcode6 LaunchImage尺寸
  • 原文地址:https://www.cnblogs.com/zhangmingcheng/p/3676893.html
Copyright © 2011-2022 走看看