• 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. }   
  • 相关阅读:
    AtCoder Beginner Contest 070 (A B C D)
    sqlite数据库的两种增删改查、事物
    CloseableHttpClient设置超时
    mybatis注解大全
    log4j.properties通用配置
    log4j.xml常用配置
    redistempalate的超时设置的操作更新
    在maven项目中如何引入另外一个项目(转)
    eclipse找不到JadClipse问题
    JDK8的新特性——Lambda表达式
  • 原文地址:https://www.cnblogs.com/zhangmingcheng/p/3676893.html
Copyright © 2020-2023  润新知