sort在c语言中的作用,c语言中sort的用法详解.docx
c語言中sort的用法詳解.docx
C語言中SORT的用法詳解C語言的學習很多是比較復雜的,那么C語言中SORT的用法的用法你知道嗎下面學習啦小編就跟你們詳細介紹下C語言中SORT的用法的用法,希望對你們有用。C語言中SORT的用法的用法SORT是STL中提供的算法,頭文件為INCLUDEALGORITHM以及USINGNAMESPACESTD函數原型如下12345TEMPLATECLASSRANDOMACCESSITERATORVOIDSORTRANDOMACCESSITERATORFIRST,RANDOMACCESSITERATORLASTTEMPLATECLASSRANDOMACCESSITERATOR,CLASSCOMPAREVOIDSORTRANDOMACCESSITERATORFIRST,RANDOMACCESSITERATORLAST,COMPARECOMP使用第一個版本是對FIRST,LAST進行升序排序,默認操作符為,第二個版本使用COMP函數進行排序控制,COMP包含兩個在FIRST,LAST中對應的值,如果使用則為升序排序,如果使用則為降序排序,分別對INT、FLOAT、CHAR以及結構體排序例子如下1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071INCLUDESTDIOHINCLUDEALGORITHMINCLUDESTRINGUSINGNAMESPACESTDSTRUCTPRODUCTCHARNAME16FLOATPRICEINTARRAY_INT54,1,2,5,3CHARARRAY_CHAR5A,C,B,E,DDOUBLEARRAY_DOUBLE512,23,52,46,35結構比較函數(按照結構中的浮點數值進行排序)BOOLCOMPARE_STRUCT_FLOATCONSTPRODUCTA,CONSTPRODUCTBRETURNAPRICEBPRICE結構比較函數(按照結構中的字符串進行排序)BOOLCOMPARE_STRUCT_STRCONSTPRODUCTA,CONSTPRODUCTBRETURNSTRINGANAMESTRINGBNAME打印函數VOIDPRINT_INTCONSTINTA,INTLENGTHPRINTF升序排序后的INT數組NFORINTI0ILENGTH1IPRINTFD,AIPRINTFDN,ALENGTH1VOIDPRINT_CHARCONSTCHARA,INTLENGTHPRINTF升序排序后的CHAR數組NFORINTI0ILENGTH1IPRINTFC,AIPRINTFCN,ALENGTH1VOIDPRINT_DOUBLECONSTDOUBLEA,INTLENGTHPRINTF升序排序后的DOBULE數組NFORINTI0ILENGTH1IPRINTF2F,AIPRINTF2FN,ALENGTH1VOIDPRINT_STRUCT_ARRAYSTRUCTPRODUCTARRAY,INTLENGTHFORINTI0ILENGTHIPRINTFNAMESTPRICE2FN,ARRAYINAME,ARRAYIPRICEPUTSVOIDMAINSTRUCTPRODUCTSTRUCTSMP3PLAYER,2990F,PLASMATV,22000F,NOTEBOOK,13000F,SMARTPHONE,49999F,DVDPLAYER,1500F,MATCHES,02F整數排序SORTARRAY_INT,ARRAY_INT5PRINT_INTARRAY_INT,5字符排序SORTARRAY_CHAR,ARRAY_CHAR5PRINT_CHARARRAY_CHAR,5浮點排序SORTARRAY_DOUBLE,ARRAY_DOUBLE5PRINT_DOUBLEARRAY_DOUBLE,5結構中浮點排序INTLENSIZEOFSTRUCTS/SIZEOFSTRUCTPRODUCTSORTSTRUCTS,STRUCTSLEN,COMPARE_STRUCT_FLOATPRINTF按結構中FLOAT升序排序后的STRUCT數組NPRINT_STRUCT_ARRAYSTRUCTS,LEN結構中字符串排序SORTSTRUCTS,STRUCTSLEN,COMPARE_STRUCT_STRPRINTF按結構中字符串升序排序后的STRUCT數組NPRINT_STRUCT_ARRAYSTRUCTS,LENSORT函數的用法做ACM題的時候,排序是一種經常要用到的操作。如果每次都自己寫個冒泡之類的ON2排序,不但程序容易超時,而且浪費寶貴的比賽時間,還很有可能寫錯。STL里面有個SORT函數,可以直接對數組排序,復雜度為NLOG2N。使用這個函數,需要包含頭文件。這個函數可以傳兩個參數或三個參數。第一個參數是要排序的區間首地址,第二個參數是區間尾地址的下一地址。也就是說,排序的區間是A,B。簡單來說,有一個數組INTA100,要對從A0到A99的元素進行排序,只要寫SORTA,A100就行了,默認的排序方式是升序。拿我出的AC的策略這題來說,需要對數組T的第0到LEN1的元素排序,就寫SORTT,TLEN對向量V排序也差不多,SORTVBEGIN,VEND排序的數據類型不局限于整數,只要是定義了小于運算的類型都可以,比如字符串類STRING。如果是沒有定義小于運算的數據類型,或者想改變排序的順序,就要用到第三參數比較函數。比較函數是一個自己定義的函數,返回值是BOOL型,它規定了什么樣的關系才是小于。想把剛才的整數數組按降序排列,可以先定義一個比較函數CMP1234BOOLCMPINTA,INTBRETURNA排序的時候就寫SORTA,A100,CMP假設自己定義了一個結構體NODE12345STRUCTNODEINTAINTBDOUBLEC有一個NODE類型的數組NODEARR100,想對它進行排序先按A值升序排列,如果A值相同,再按B值降序排列,如果B還相同,就按C降序排列。就可以寫這樣一個比較函數以下是代碼片段123456BOOLCMPNODEX,NODEYIFXAYARETURNXAIFXBYBRETURNXBRETURNRETURNXC排序時寫SORTARR,A100,CMP12345QSORTS0,N,SIZEOFS0,CMPINTCMPCONSTVOIDA,CONSTVOIDBRETURNINTAINTBSORT函數的用法對INT類型數組排序1234567INTNUM100SAMPLEINTCMPCONSTVOIDA,CONSTVOIDBRETURNINTAINTBQSORTNUM,100,SIZEOFNUM0,CMPSORT函數的用法對CHAR類型數組排序同INT類型1234567CHARWORD100SAMPLEINTCMPCONSTVOIDA,CONSTVOIDBRETURNCHARAINTBQSORTWORD,100,SIZEOFWORD0,CMPSORT函數的用法對DOUBLE類型數組排序特別要注意123456DOUBLEIN100INTCMPCONSTVOIDA,CONSTVOIDBRETURNDOUBLEADOUBLEB11QSORTIN,100,SIZEOFIN0,CMP;SORT函數的用法對結構體一級排序1234567891011STRUCTINDOUBLEDATAINTOTHERS100按照DATA的值從小到大將結構體排序,關于結構體內的排序關鍵數據DATA的類型可以很多種,參考上面的例子寫INTCMPCONSTVOIDA,CONSTVOIDBRETURNINADATAINBDATAQSORTS,100,SIZEOFS0,CMPSORT函數的用法對結構體1234567891011121314STRUCTININTXINTYS100按照X從小到大排序,當X相等時按照Y從大到小排序INTCMPCONSTVOIDA,CONSTVOIDBSTRUCTINCINASTRUCTINDINBIFCXDXRETURNCXDELSERETURNDYCQSORTS,100,SIZEOFS0,CMPSORT函數的用法對字符串進行排序1234567891011STRUCTININTDATACHARSTR100S100按照結構體中字符串STR的字典順序排序INTCMPCONSTVOIDA,CONSTVOIDBRETURNSTRCMPINASTR,INBSTRQSORTS,100,SIZEOFS0,CMPSORT函數的用法計算幾何中求凸包的CMP123456789INTCMPCONSTVOIDA,CONSTVOIDB重點CMP函數,把除了1點外的所有點,旋轉角度排序STRUCTPOINTCPOINTASTRUCTPOINTDPOINTBIFCALCC,D,P10RETURN1ELSEIFCALCC,D,P1DISCX,CY,P1X,P1YDISDX,DY,P1X,P1Y如果在一條直線上,則把遠的放在前面RETURN1ELSERETURN1猜你喜歡1C中的用法2C語言中邏輯或的用法3C語言STRCMP的用法4C語言中FREE的用法5C語言POW的用法6C語言中PUTCHAR的用法
總結
以上是生活随笔為你收集整理的sort在c语言中的作用,c语言中sort的用法详解.docx的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C# 关于WinForm界面在触摸屏上显
- 下一篇: GraphQL的探索之路 – 一种为你的