zoukankan      html  css  js  c++  java
  • 高效排序法

    在stdlib.h里 
    qsort(a, n, sizoef(int), cmp) ;
    这样一句就排好了
    第一个参数是需要排序的指针,一般为数组类型,我们这儿传进去的是e; 第二个参数是进行排序的元素个数,由于我们只初始化了10个,所以传10; 第三个参数是每个元素的大小,所以我们传进去sizeof(expo); 第四个参数是比较的逻辑,是一个函数指针,我们传进去修改后的cmp;

    # include <stdio.h>
    # include <stdlib.h>


    int cmp1(const void *a, const void *b)
    {
    int aa = *(int*)a , bb = *(int*)b ;
    return aa - bb ;
    }


    int cmp2(const void *a, const void *b)
    {
    int aa = *(int*)a , bb = *(int*)b ;
    if (aa < 0) aa = -aa ;
    if (bb < 0) bb = -bb ;
    return aa - bb ;
    }


    int main ()
    {
    int a[5] = {1, 2, -1, -2, 0} ;
    int i ;


    qsort (a, 5, sizeof(int), cmp1) ;
    for (i = 0 ; i < 5 ; i++)
    printf ("M", a[i]) ;
    printf ("\n") ;

    qsort (a, 5, sizeof(int), cmp2) ;
    for (i = 0 ; i < 5 ; i++)
    printf ("M", a[i]) ;
    printf ("\n") ;

    return 0 ;
    }


    除了 return aa - bb ;

    其他都是固定写法
    不用管为什么
    aa是
    aa是a元素的值 bb是b元素的值
    我返回的是aa - bb
    是什么意思呢



    如果aa < bb 返回的是一个负数
    如果aa == bb 返回的是0
    如果aa > bb 返回的是一个正数
    这就是比较函数的意思
    比较函数cmp用于返回两个元素的大小关系

    如果第一个元素小于第二个元素 返回负数
    如果两个元素相同 返回0
    如果第一个元素大于第二个元素 返回正数

    但是。。。也没体现降序排列啊

    如果你想反过来
    你就返回bb-aa啊
  • 相关阅读:
    正则表达式
    模块的初始
    装饰器 1
    匿名函数
    内置函数一(待跟新)
    python 学习迭代器的认识
    python 学习笔记 —— 函数的认识
    搭建yum 源
    python 学习第六天 文件的处理方式
    python 学习第五天 字典得 增删改查
  • 原文地址:https://www.cnblogs.com/chaosheng/p/2329607.html
Copyright © 2011-2022 走看看