91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++中的sort()函數怎么使用

發布時間:2023-03-09 09:37:03 來源:億速云 閱讀:124 作者:iii 欄目:開發技術

這篇文章主要介紹“C++中的sort()函數怎么使用”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“C++中的sort()函數怎么使用”文章能幫助大家解決問題。

    sort(v.begin(),v.end(),cmp),它是用來對一組序列進行排序的。sort函數進行排序的時間復雜度為n*log2n,比冒泡之類的排序算法效率要高,包含在頭文件為#include<algorithm>的c++標準庫中。

            其有三個參數,前兩個參數是待排序區間;第三個參數可有可無(第三個參數代表比較規則),沒有第三個參數的時候,sort()默認按升序排列,有第三個參數的時候,可以通過這個參數實現各種各樣的排序,包括降序。sort()函數功能強大就是強大在第三個參數。

            sort()函數除了可以對int型、char型、double型、字符串排序外,還可以實現對結構體、鏈表、pair、vector、等類型進行排序,但需要自己寫比較函數。而且sort()既可以對數組排序,也可以對vector容器排序。下面就先說一下sort()只有兩個參數時的用法,具體代碼見下:

     #include<iostream>
      #include<vector>
      #include<string>
      #include<algorithm>
      using namespace std;
      int main()
      {
          int a[10]={6,5,4,8,3,9,7,10,1,2};
          char b[8]={'h','z','l','n','m','r','d','g'};
         vector<double> v1;
         vector<string> v2;
        
         sort(a+1,a+9);    //可以指定任意合法的排序區間,不能越界
     
         sort(b,b+8);     //對整個b排序
     
         sort(v1.begin(),v1.end());//輸入兩個迭代器從而排序一個范圍
     
         sort(v2.begin(),v2.end());
     
         return 0;
     }

    上面幾種方法都是升序排列,要想按降序排列,有3種方法可以實現:

    1. sort()函數只有兩個參數時默認升序排列,在排完序后,再用reverse()函數把整個序列給翻轉一下,這樣序列就變成了降序。

         sort(a+1,a+9);    //可以指定任意合法的排序區間,不能越界
         reverse(a+1,a+9);
          sort(b,b+8);     //對整個b排序
         reverse(b,b+8);
         sort(v1.begin(),v1.end());
         reverse(v1.begin(),v1.end());
         sort(v2.begin(),v2.end());
         reverse(v2.begin(),v2.end());

    2. 借助c++標準庫來實現降序(或升序)。此時要包含頭文件<functional>,<functional>頭文件提供了一些基于模板的比較函數對象,這里在排序的時候只用到了 greater<type>() 和 less<type>() 兩個;讓 greater<type>() 或 less<type>() 做sort()函數的第三個參數來實現升序或降序排列;其中greater<type>() 用于降序排列,less<type>() 用于升序排列

         sort(a,a+10,greater<int>());//降序排列
        sort(a,a+10,less<int>());//升序排列

    3. 第三個方法是自己寫一個比較函數來實現升序或降序排列,并讓這個比較函數做sort()函數的第三個參數;比較函數不僅能實現升序降序排列,還能實現其他的功能。

    這就是sort()函數功能強大的地方,它可以擴展,而擴展的關鍵就是第三個參數。

        先說一下比較函數,當你想實現特定比較方式的時候,就要自己定義一個返回bool值的比較函數了;這時sort()函數的第三個參數就是一個函數,如果它返回假值就交換操作對象的位置,返回真值的話操作對象位置不變。下面就用比較函數來實現升序降序的排列:

    首先實現比較函數,注意比較函數參數數據類型要與需要比較的對象一致:

      bool cmp1(int a,int b)  //按降序排列
      {
          return a>b;
      }
      
     bool cmp2(int a,int b)  //按升序排列
     {
         return a<b;
     }

    然后調用sort函數即可,此時不需要給比較函數傳入參數,比較函數只是確定比較的規則。

         sort(v.begin(),v.end(),cmp1);   //這里不需要對比較函數cmp1傳入參數
     
         sort(v.begin(),v.end(),cmp2);   不需要對比較函數cmp2傳入參數

     另外比較函數可以用lambda表達式來寫,這是leetcode  hot100的一道題:

    C++中的sort()函數怎么使用

    首先需要對people的vector按照hi進行從小到大的升序排列,對于相同的hi再按照ki進行從大到小的降序排序,我們使用sort中第三個參數的強大功能,就能夠自己定義比較規則,一條語句就能實現我們需要的排序。代碼如下:

    //排序,方法使用lambda表達式
    		sort(people.begin(), people.end(), [](vector<int>& a, vector<int>& b) -> bool {return (a[0] < b[0]) || ((a[0] == b[0]) && (a[1] > b[1])); });

    關于“C++中的sort()函數怎么使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    青阳县| 文成县| 黄梅县| 天等县| 澜沧| 家居| 历史| 晋中市| 伊金霍洛旗| 西贡区| 阿合奇县| 碌曲县| 巫山县| 佛山市| 图们市| 高安市| 上虞市| 河东区| 桑植县| 叶城县| 沙洋县| 边坝县| 枣强县| 霞浦县| 织金县| 嘉黎县| 阿勒泰市| 溧水县| 临颍县| 蕲春县| 县级市| 和静县| 贵德县| 叙永县| 永兴县| 宁津县| 北宁市| 准格尔旗| 搜索| 六盘水市| 监利县|