精华内容
下载资源
问答
  • void sort在C语言中什么意思?

    千次阅读 2021-05-20 10:07:41
    void是C语言中的一个关键字,其含义因其应用形式不同,一般分为两种:voidvoid *void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。void几乎只有“注释”和限制程序的作用,...

    void是C语言中的一个关键字,其含义因其应用形式不同,一般分为两种:void和void *

    void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。

    void几乎只有“注释”和限制程序的作用,定义一个void变量没有意义,不妨试着定义:

    这行语句编译时会出错,提示“illegal use of type 'void'”。不过,即使void a的编译不会出错,它也没有任何实际意义。

    void真正发挥的作用在于:

    (1) 对函数返回的限定;

    (2) 对函数参数的限定。

    6f24a2f5c957c356b2c4052142d1b61e.png

    扩展资料:

    如果函数无参数,那么应声明其参数为void。

    在C++语言中声明一个这样的函数:

    int function(void)

    {

    return1;

    }

    则进行下面的调用是不合法的:

    function(2);

    因为在C++中,函数参数为void的意思是这个函数不接受任何参数。

    在Turbo C 2.0中编译:

    #include "stdio.h"

    fun()

    {

    return 1;

    }

    main()

    {

    printf("%d",fun(2));

    getchar();

    }

    展开全文
  • 头文件是#include比如说数组a[5]={1,5,4,2,3};当你用sort(a,a+5)时,就把...如果在C语言中,遇到有调用sort函数,就是自定义的一个函数,功能一般用于排序。一、可以编写自己的sort函数。如下函数为将整型数组从小...

    头文件是#include

    比如说数组a[5]={1,5,4,2,3};

    当你用sort(a,a+5)时,就把数组a从小到大排序了

    for(i=0;i<5;i++)

    {

    printf("%d \n",a[i]);

    }

    输出为1 2 3 4 5

    C语言中没有预置的sort函数。如果在C语言中,遇到有调用sort函数,就是自定义的一个函数,功能一般用于排序。

    一、可以编写自己的sort函数。

    如下函数为将整型数组从小到大排序。

    void sort(int *a, int l)//a为数组地址,l为数组长度。

    {

    int i, j;

    int v;

    //排序主体

    for(i = 0; i 

    for(j = i+1; j 

    {

    if(a[i] > a[j])//如前面的比后面的大,则交换。

    {

    v = a[i];

    a[i] = a[j];

    a[j] = v;

    }

    }

    }

    对于这样的自定义sort函数,可以按照定义的规范来调用。

    二、C语言有自有的qsort函数。

    功 能: 使用快速排序例程进行排序

    头文件:stdlib.h

    原型: void qsort(void *base,int nelem,int width,int (*fcmp)(const void *,const void *));

    参数:

    1 待排序数组首地址

    2 数组中待排序元素数量

    3 各元素的占用空间大小

    4 指向函数的指针,用于确定排序的顺序

    这个函数必须要自己写比较函数,即使要排序的元素是int,float一类的C语言基础类型。

    以下是qsort的一个例子:

    #include

    #include

    int comp(const void*a,const void*b)//用来做比较的函数。

    {

    return *(int*)a-*(int*)b;

    }

    int main()

    {

    int a[10] = {2,4,1,5,5,3,7,4,1,5};//乱序的数组。

    int i;

    qsort(a,n,sizeof(int),comp);//调用qsort排序

    for(i=0;i<10;i++)//输出排序后的数组

    {

    printf("%d\t",array[i]);

    }

    return 0;

    }

    展开全文
  • C++中sort函数

    2021-05-09 14:46:06
    首先,C++中使用sort函数的时候需要加上头文件#include<algorithm>。 并且sort函数的语法格式为: void sort (RandomAccessIterator first, RandomAccessIterator last); 也可以自定义排序规则comp void sort...

    基本语法

    首先,C++中使用sort函数的时候需要加上头文件#include<algorithm>
    并且sort函数的语法格式为:

    void sort (RandomAccessIterator first, RandomAccessIterator last);
    

    也可以自定义排序规则comp

    void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);
    

    注意:从sort函数语法格式中的RandomAccessIterator就能看出,sort只能用在容器支持的迭代器类型必须为随机访问的迭代器

    复杂度

    STL的sort()算法,数据量大时采用快速排序(Quick Sort),分段递归排序。一旦分段后的数据量小于某个阈值,为避免Quick Sort的递归调用带来过大的额外开销,就改用Insertion Sort(插入排序)。如果递归层次过深,还会改用Heap Sort(堆排序)。

    快排的思想就是分段递归,具体可以参考本连接。

    因此平均时间复杂度为:O(nlogn)

    哪些容器能用sort函数

    string容器
    vector容器
    deque容器
    以上三种容器都可以使用sort函数。

    以下几种容器不能使用sort函数。
    C++中,set 和 map 分别提供以下三种数据结构,其底层实现以及优劣如下表所示:

    集合底层实现是否有序数值是否可以重复能否更改数值查询效率增删效率
    std::set红黑树有序O(nlogn)O(nlogn)
    std::multiset红黑树有序O(nlogn)O(nlogn)
    std::unordered_set哈希表无序O(1)O(1)

    红黑树是一种平衡二叉搜索树,所以key值是有序的,但key不可以修改,改动key值会导致整棵树的错乱,所以只能删除和增加。

    映射底层实现是否有序数值是否可以重复能否更改数值查询效率增删效率
    std::map红黑树key有序key不可重复key不可修改O(nlogn)O(nlogn)
    std::multimap红黑树key有序key可重复key不可修改O(nlogn)O(nlogn)
    std::unordered_map哈希表key无序key不可重复key不可修改O(1)O(1)

    此外,map支持下标操作,set不支持下标操作。
    以上两表来源

    从上面表格可以看出set、multiset、map、multimap、unordered_set、unordered_map都不能使用sort函数进行排序。
    如果需要将其排序的话,需要借助vector容器。

    unordered_map<char, int> map;
    //map容器赋值后,再新建一个vector容器,并初始化如下:
    vector<pair<char, int>> v(map.begin(), map.end());
    

    从而再借助自定义的sort函数中comp排序规则

    //以map中value值的升序排序
    bool mysort(pair<char, int>& p1, pair<char, int>& p2) {
    	return p1.second < p2.second;
    }
    //从而运用sort函数排序
    sort(v.begin(), v.end(), mysort);
    

    对于list容器的sort函数,不能使用algorithm下的sort()函数,但是可以使用list容器自带的sort进行排序

    list<int> l;
    l.sort(); //默认从小到大排序
    

    也可以自定义排序

    bool myCompare(int val1 , int val2)
    {
    	return val1 > val2;
    }
    l.sort(myCompare);  //指定排序规则,从大到小
    
    展开全文
  • 在 MATLAB 里,返回排序后的矩阵以及对应原矩阵的索引是在 sort 一个函数搞定,但在 OpenCV 中,其功能分别被分配到了 cv::sort 和 cv::sortIdx 里,cv::sort 负责返回排序后的矩阵,cv::sortIdx 负责返回对应原矩阵...

    在 MATLAB 里,返回排序后的矩阵以及对应原矩阵的索引是在 sort 一个函数搞定,但在 OpenCV 中,其功能分别被分配到了 cv::sort 和 cv::sortIdx 里,cv::sort 负责返回排序后的矩阵,cv::sortIdx 负责返回对应原矩阵的索引。

    还有在 MATLAB 里,1 和 2 用来分别指示是对列还是对行进行排序,’ascend’ 和 ‘descend’ 用来指示是升序还是降序。在 OpenCV 中,我们用类似于 CV_SORT_EVERY_ROW + CV_SORT_ASCENDING 这样的方式来一并指定对列还是对行以及升序还是降序,其指示值定义如下,所以可以组合出 4 种不同的方式:

    #define CV_SORT_EVERY_ROW 0

    #define CV_SORT_EVERY_COLUMN 1

    #define CV_SORT_ASCENDING 0

    #define CV_SORT_DESCENDING 16

    CV_SORT_EVERY_ROW + CV_SORT_ASCENDING:对矩阵的每行按照升序排序;

    CV_SORT_EVERY_ROW + CV_SORT_DESCENDING:对矩阵的每行按照降序排序;

    CV_SORT_EVERY_COLUMN + CV_SORT_ASCENDING:对矩阵的每列按照升序排序;

    CV_SORT_EVERY_COLUMN + CV_SORT_DESCENDING:对矩阵的每列按照降序排序;

    具体代码可见 OpenCV-and-CPP-for-MATLAB-Users Demo_OpenCVFunctions 文件夹下的 demo_sort_sortIdx.cpp 函数,为了方便起见,将代码陈列如下:

    #include

    #include

    void demo_sort_sortIdx()

    {

    int testArrLen = 5;

    cv::Mat_ testArr = cv::Mat::zeros(2, testArrLen, CV_32S);

    testArr(0,0) = 87;

    testArr(0,1) = 65;

    testArr(0,2) = 98;

    testArr(0,3) = 12;

    testArr(0,4) = 55;

    testArr(1,0) = 86;

    testArr(1,1) = 66;

    testArr(1,2) = 97;

    testArr(1,3) = 17;

    testArr(1,4) = 54;

    cv::Mat_ sortArr, sortIdxArr;

    cv::sort(testArr, sortArr, CV_SORT_EVERY_ROW + CV_SORT_ASCENDING);

    cv::sortIdx(testArr, sortIdxArr, CV_SORT_EVERY_ROW + CV_SORT_ASCENDING);

    std::cout<

    std::cout<

    std::cout<

    }

    转载请注明出处。

    展开全文
  • sort是STL中提供的算法,头文件为#include... 函数原型如下:template void sort ( RandomAccessIterator first, RandomAccessIterator last );template void sort ( RandomAccessIterator first, RandomAccessItera...
  • c语言运用sort 排序函数,需要的头文件是什么?sort不属于C语言的标准函数,所以也没有相应的头文件,但是可以自定义。...iC++ algorithm 里的sort函数怎么用我不懂最后那个参数是什么意思?sort函数用法...
  • javasort函数用法

    2021-03-09 17:55:20
    c++ sort函数用法 详细!C++sort()函数的用法近来看了 c++标准库这本书,学到了很多,就把这其中的一......主函数main中调用函数sort(&aa[3],5);,使得数组aa中从...if(a[i][解析] 本题中首先定义一个长度为10的整型...
  • sort函数用法

    2021-03-09 17:55:19
    sort函数的用法做ACM题的时候,排序是一种经常要用到的操作。如果每次都自己写个冒泡之类的O(n^2)排序,不但程序容易超时,而且浪费宝贵的比赛时间,还很有可能写错。STL里面有个sort函数,可以直接对数组排序,...
  • 编写一个sort()函数,实现选择法排序,在主函数中输入10个整数,主函数调用sort()函数实现排序后将数据输出。重赏重赏更新时间:2019-05-06 04:06最满意答案#include void sort(int a[]){int i,j,index,temp;for(i=0...
  • (1.000000 ,1.000000)->(2.000000,2.000000) ,dis:1.414214 (1.000000 ,1.000000)->(2.000000,4.000000) ,dis:3.162278 (2.000000 ,2.000000)->(2.000000,4.000000) ,dis:2.000000 为什么排序函数中看到的Edge信息 ...
  • 一.sort函数 1.sort函数包含在头文件为#include的c++标准库中,调用标准库里的排序方法可以实现对数据的排序,但是sort函数是如何实现的,我们不用考虑! 2.sort函数的模板有三个参数: void sort ...
  • sort函数

    2021-02-06 11:43:50
    1.函数原型 sort(iterator beg, iterator end, _pred) 按值查找元素,找到返回指定位置迭代器,找不到返回结束迭代器位置 beg 开始迭代器 end 结束迭代器 _pred 谓词 #include<iostream> #include<...
  • 排序经常会在一个程序里面用到,但当排序范围较大时,时间复杂度所带来的问题...void sort(int a[],int left ,int right) { int i,j,temp; i=left; j=right; temp=a[left]; if(left>right) return; while(i!=j
  • http://blog.163.com/yuhua_kui/blog/static/9679964420142195442766/先说明一下:qsort和sort,只能对连续内存的数据进行排序,像链表这样的结构是无法排序的。首先说一下, qsortqsort(基本快速排序的方法,每次把...
  • linux内核中的sort函数,其实跟我们所说的qsort函数很像,我们来看看qsort:qsort 的函数原型是void qsort(void*base,size_t num,size_t width,int(__cdecl*compare)(const void*,const void*));参数:1 、待排序数组...
  • sort排序是从小到大

    千次阅读 2021-05-22 12:21:45
    java数组排序问题:array.sort()是从小到大排序,别告诉我从i=a.length开始打印然后i。因为数组没变啊,只是打印顺序变Integer [] array=new Integer[]{1,2,3,4,5}; java.util.Arrays.sort(array, new java.util....
  • sort函数详解(C++)

    2021-07-26 10:29:16
    sort函数包含在头文件为#include<algorithm>的c++标准库中,调用标准库里的排序方法可以实现对数据的排序,但是sort函数是如何实现的,我们目前不用考虑! sort函数的形式: void sort ...
  • 浅谈sort函数底层

    2021-01-02 13:38:57
    sort函数的底层用到的是内省式排序以及插入排序,那么什么是内省式排序呢?和插入排序又是如何组合的呢? 根据维基百科描述:内省排序(英语:Introsort)是由David Musser在1997年设计的排序算法。这个排序算法首先...
  • C++中SORT函数使用方法

    2021-10-21 22:26:10
    一.sort函数 1.sort函数包含在头文件为#include的c++标准库中,调用标准库里的排序方法可以实现对数据的排序,但是sort函数是如何实现的,我们不用考虑! 2.sort函数的模板有三个参数: void sort ...
  • 形参不可以是void类型吗我只会C!function1(viodx,voidy)//调用函数的时候根据实参的类型来确定x,y的类型{......}//还有sizeof是函数吗,还是运算符?可不可以这样定义函数?function1(voidx){intlen=sizeof(x);//...
  • 首先来看看std中的快速排序算法sort的使用方法: template void sort ( RandomAccessIterator first, RandomAccessIterator last, Compare comp ); 这是一个带模板的函数,参数1和2表示需要排序的元素在随机迭代器...
  • 函数有两个版本: // 第一个版本接受两个定义区间的迭代器参数,并使用为存储在容器中的类型元素定义的 // 如果容器元素是用户定义的对象,则要使用sort(),必须定义能够处理该类型对象的 operator<() 函数。...
  • 目录1. 使用sort算法自定义排序的几种方法及类内实现出现的问题2....通常,我们通过自定义一个cmp函数(官方称为谓词)作为sort的第三个参数来指定我们指定的排序规则,举例如下: 输入:给定一个二维数组env
  • 基于C语言中的sort如此这么方便,自然而然,java中也有类似C的sort函数。1.普通数组:Arrays.sort(数组名,开始位置,结束位置)。2.类中属性排序:模板:class A{int n;}class cmp implement Comparator{降序:...
  • Sort函数

    2021-03-08 18:15:03
    sort函数有三个参数: 要排序数组的起始地址 要排序数组的最后一个数据元素的下一个地址 排序方法,如果没有排序方法的话,默认从小到大排序 //sort函数对string内的字符进行排序(string为字符串类型数据) #...
  • 代码:#includevoid sort(int*a,int n){int i,j,k,temp;for(i=0;i{k=i;for(j=i+1;j{if(*(a+k)<*(a+j))k=j;}if(k!=i){temp=*(a+k);*(a+k)=*(a+i);*(a+i)=temp;}}}int main(){int n,i,a[10],j;scanf("%d",&n);...
  • sort函数详解

    2021-01-01 23:24:17
    1.sort 使用:#include using namespace std; 作用:排序 时间复杂度:n*lg(n) 实现原理:sort并不是简单的快速排序,它对普通的快速排序进行了优化,此外,它还结合了插入排序和推排序。系统会根据你的数据形式和...
  • #include <iostream> using namespace std; #include<string> #include<algorithm> #include<vector> struct Person { ...bool Sort(const Person& a, const Person&am

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 174,254
精华内容 69,701
关键字:

sort是什么函数void