zoukankan      html  css  js  c++  java
  • C++可直接使用的排序函数:qsort(),sort()

    C++ 可直接使用的排序函数:qsort(),sort()

     

    Posted by 超级苍蝇 on Oct 7, 2005 in 随风~ |

    qsort() 和 sort()

    (wysuperfly原创 v1.1)

    //基于c++描述 <<将标准 C++ 视为一个新语言>>

    使用C++编译器(VC6,G++等)可以使用STL里的sort()函数或者CRT中的 qsort()来排序,这么好的函数我居然才知道,真是孤陋阿~总算摆脱整天冒泡的日子了~~~
    [注] qsort () 可在任何C/C++编译器里使用。
    而sort()函数是标准模板库的的函数可在C++编译器里使用。

    赫赫,介绍一下:


    使用
    #include <iostream>
    using namespace std;
    开头的,可以直接使用这2个函数,而不用额外包含其他头文件。



    qsort()    

    .

    .

    应该就是用的快排。貌似是以数据块的方式移动数据,速度较快。

    原型:
    _CRTIMP void __cdecl qsort (void*, size_t, size_t,int (*)(const void*, const void*));

    解 释:    qsort ( 数组名 ,元素个数,元素占用的空间(sizeof),比较函数) 
    比较函数是一个自己写的函 数  遵循 int com(const void *a,const void *b) 的格式。
    当a b关系为 >  <  = 时,分别返回正值 负值 零 (或者相反)。
    使用a b 时要强制转换类型,从void * 转换回应有的类型后,进行操作。 
    数组下 标从零开始,个数为N, 下标0-(n-1)。

    示例:

    int nn[100],n=100;
    int com(const void *a,const void *b)
    {
        return *(int*)a-*(int*)b;
    }   

    qsort((void *)nn,n,sizeof(int),com);

    相关:

    为什麽你必须给予元素个数?(因为阵列不知道它自己有多少个元素)为什麽你必须给予 double 的大小?(因为 qsort 不知道它要排序的单位是 doubles.)为什麽你必须写那个丑陋的、用来比较 doubles 数值的函式?(因为 qsort 需要一个指标指向某个函式,因为它不知道它所要排序的元素型别)为什麽 qsort 所使用的比较函式接受的是 const void* 引数而不是 char* 引数?(因为 qsort 可以对非字串的数值排序)Bjarne Stroustrup

    sort()    

    .

    .

    sort()函数是标准模板库的的函数,已经进行了优化,根据情况的不同可以采用不同的算法,所以较快。

    在同样的元素和同样的比较条件下,sort()的执行速度都比qsort()要快。另外,sort()是类属函数,可以用于比较任何容器,任何元 素,任何条件。

    stl_algo.h 里面找到的:
    template<typename _RandomAccessIterator>
        void
        __insertion_sort(_RandomAccessIterator __first, _RandomAccessIterator __last)

    只要开始和结束的地址就可以了。模板可以直接使用很多类型。

    示例:

    1:上面的程序:
    sort(nn,nn+n);即可。

    2:比较方 便的字符串排序:

       char ch[20]="sdasdacsdasdas\0";
       cout<<ch<<endl;
       sort(ch,ch+14);
       cout<<ch<<endl;

  • 相关阅读:
    6.Java中的链表数据结构ListNode
    5.把字符串转换成整数
    vue-cli3预设preset记录
    vue2.0用法技巧汇总
    typeof
    js对象注意
    本地搭建sass运行环境
    安卓手机移动端Web开发调试之Chrome远程调试(Remote Debugging)
    Vue中引入jquery方法
    移动端开发问题及技巧汇总
  • 原文地址:https://www.cnblogs.com/gaotaozhaolei/p/1701495.html
Copyright © 2011-2022 走看看