日韩综合久久_日本一区免费在线观看_国内外一级毛片_中文字幕日本一本二本三区

全國統一學習專線 8:30-21:00
位置:勵普教育 > 英語 > 個人提升英語 > c語言中sort的用法詳解 c語言  正文

c語言中sort的用法詳解 c語言

2022-12-16 10:17:15來源:勵普網

哈嘍小伙伴們 ,今天給大家科普一個小知識。在日常生活中我們或多或少的都會接觸到c語言中sort的用法詳解 c語言方面的一些說法,有的小伙伴還不是很了解,今天就給大家詳細的介紹一下關于c語言中sort的用法詳解 c語言的相關內容。


(資料圖)

  c語言的學習很多是比較復雜的,那么c語言中sort的用法的用法你知道嗎?小編就跟你們詳細介紹下c語言中sort的用法的用法,希望對你們有用。

  c語言中sort的用法的用法

  sort是STL中提供的算法,頭文件為#include<algorithm>以及using namespace std; 函數原型如下:

  template <class RandomAccessIterator>

  void sort ( RandomAccessIterator first, RandomAccessIterator last );

  template <class RandomAccessIterator, class Compare>

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

  使用第一個版本是對[first,last)進行升序排序,默認操作符為"<",第二個版本使用comp函數進行排序控制,comp包含兩個在[first,last)中對應的值,如果使用"<"則為升序排序,如果使用">"則為降序排序,分別對int、float、char以及結構體排序例子如下:

  #include<stdio.h>

  #include<algorithm>

  #include<string>

  using namespace std;

  struct product{

  char name[16];

  float price;

  };

  int array_int[5]={4,1,2,5,3};

  char array_char[5]={"a","c","b","e","d"};

  double array_double[5]={1.2,2.3,5.2,4.6,3.5};

  //結構比較函數(按照結構中的浮點數值進行排序)

  bool compare_struct_float(const product &a,const product &b){

  return a.price<b.price;

  }

  //結構比較函數(按照結構中的字符串進行排序)

  bool compare_struct_str(const product &a,const product &b){

  return string(a.name)<string(b.name);

  }

  //打印函數

  void print_int(const int* a,int length){

  printf("升序排序后的int數組:\n");

  for(int i=0; i<length-1; i++)

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

  printf("%d\n",a[length-1]);

  }

  void print_char(const char* a,int length){

  printf("升序排序后的char數組:\n");

  for(int i=0; i<length-1; i++)

  printf("%c ",a[i]);

  printf("%c\n",a[length-1]);

  }

  void print_double(const double* a,int length){

  printf("升序排序后的dobule數組:\n");

  for(int i=0; i<length-1; i++)

  printf("%.2f ",a[i]);

  printf("%.2f\n",a[length-1]);

  }

  void print_struct_array(struct product *array, int length)

  {

  for(int i=0; i<length; i++)

  printf("[ name: %s \t price: $%.2f ]\n", array[i].name, array[i].price);

  puts("--");

  }

  void main()

  {

  struct product structs[] = {{"mp3 player", 299.0f}, {"plasma tv", 2200.0f},

  {"notebook", 1300.0f}, {"smartphone", 499.99f},

  {"dvd player", 150.0f}, {"matches", 0.2f }};

  //整數排序

  sort(array_int,array_int+5);

  print_int(array_int,5);

  //字符排序

  sort(array_char,array_char+5);

  print_char(array_char,5);

  //浮點排序

  sort(array_double,array_double+5);

  print_double(array_double,5);

  //結構中浮點排序

  int len = sizeof(structs)/sizeof(struct product);

  sort(structs,structs+len,compare_struct_float);

  printf("按結構中float升序排序后的struct數組:\n");

  print_struct_array(structs, len);

  //結構中字符串排序

  sort(structs,structs+len,compare_struct_str);

  printf("按結構中字符串升序排序后的struct數組:\n");

  print_struct_array(structs, len);

  }

  sort函數的用法

  做ACM題的時候,排序是一種經常要用到的操作。如果每次都自己寫個冒泡之類的O(n^2)排序,不但程序容易超時,而且浪費寶貴的比賽時間,還很有可能寫錯。STL里面有個sort函數,可以直接對數組排序,復雜度為n*log2(n)。使用這個函數,需要包含頭文件。

  這個函數可以傳兩個參數或三個參數。第一個參數是要排序的區間首地址,第二個參數是區間尾地址的下一地址。也就是說,排序的區間是[a,b)。簡單來說,有一個數組int a[100],要對從a[0]到a[99]的元素進行排序,只要寫sort(a,a+100)就行了,默認的排序方式是升序。

  拿我出的“AC的策略”這題來說,需要對數組t的第0到len-1的元素排序,就寫sort(t,t+len);

  對向量v排序也差不多,sort(v.begin(),v.end());

  排序的數據類型不局限于整數,只要是定義了小于運算的類型都可以,比如字符串類string。

  如果是沒有定義小于運算的數據類型,或者想改變排序的順序,就要用到第三參數——比較函數。比較函數是一個自己定義的函數,返回值是bool型,它規定了什么樣的關系才是“小于”。想把剛才的整數數組按降序排列,可以先定義一個比較函數cmp

  bool cmp(int a,int b)

  {

  return a>b;

  }

  排序的時候就寫sort(a,a+100,cmp);

  假設自己定義了一個結構體node

  struct node{

  int a;

  int b;

  double c;

  }

  有一個node類型的數組node arr[100],想對它進行排序:先按a值升序排列,如果a值相同,再按b值降序排列,如果b還相同,就按c降序排列。就可以寫這樣一個比較函數:

  以下是代碼片段:

  bool cmp(node x,node y)

  {

  if(x.a!=y.a) return x.a

  if(x.b!=y.b) return x.b>y.b;

  return return x.c>y.c;

  }

  排序時寫sort(arr,a+100,cmp);

  qsort(s[0],n,sizeof(s[0]),cmp);

  int cmp(const void *a,const void *b)

  {

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

  }

  sort函數的用法:對int類型數組排序

  int num[100];

  Sample:

  int cmp ( const void *a , const void *b )

  {

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

  }

  qsort(num,100,sizeof(num[0]),cmp);

  sort函數的用法:對char類型數組排序(同int類型)

  char word[100];

  Sample:

  int cmp( const void *a , const void *b )

  {

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

  }

  qsort(word,100,sizeof(word[0]),cmp);

  sort函數的用法:對double類型數組排序(特別要注意)

  double in[100];

  int cmp( const void *a , const void *b )

  {

  return *(double *)a > *(double *)b ? 1 : -1;

  }

  qsort(in,100,sizeof(in[0]),cmp);

  sort函數的用法:對結構體一級排序

  struct In

  {

  double data;

  int other;

  }s[100]

  //按照data的值從小到大將結構體排序,關于結構體內的排序關鍵數據data的類型可以很多種,參考上面的例子寫

  int cmp( const void *a ,const void *b)

  {

  return ((In *)a)->data - ((In *)b)->data ;

  }

  qsort(s,100,sizeof(s[0]),cmp);

  sort函數的用法:對結構體

  struct In

  {

  int x;

  int y;

  }s[100];

  //按照x從小到大排序,當x相等時按照y從大到小排序

  int cmp( const void *a , const void *b )

  {

  struct In *c = (In *)a;

  struct In *d = (In *)b;

  if(c->x != d->x) return c->x - d->x;

  else return d->y - c->y;

  }

  qsort(s,100,sizeof(s[0]),cmp);

  sort函數的用法:對字符串進行排序

  struct In

  {

  int data;

  char str[100];

  }s[100];

  //按照結構體中字符串str的字典順序排序

  int cmp ( const void *a , const void *b )

  {

  return strcmp( ((In *)a)->str , ((In *)b)->str );

  }

  qsort(s,100,sizeof(s[0]),cmp);

  sort函數的用法:計算幾何中求凸包的cmp

  int cmp(const void *a,const void *b) //重點cmp函數,把除了1點外的所有點,旋轉角度排序

  {

  struct point *c=(point *)a;

  struct point *d=(point *)b;

  if( calc(*c,*d,p[1]) < 0) return 1;

  else if( !calc(*c,*d,p[1]) && dis(c->x,c->y,p[1].x,p[1].y) < dis(d->x,d->y,p[1].x,p[1].y)) //如果在一條直線上,則把遠的放在前面

  return 1;

  else return -1;

  }


相關內容: 言中 sort 用法 語言 詳解 語言 學習 很多 比較 復雜

同類文章
導航

雅思 托福 GRE IB SAT GMAT A-Level ACT 多鄰國英語測試 OSSD 英語四六級 出國英語 詞匯 AEAS 英語口語 商務英語 考研英語 青少英語 成人英語 個人提升英語 高中英語 劍橋英語 AP課程 一級建造師 二級建造師 消防工程師 消防設施操作員 BIM 造價工程師 環評師 監理工程師 咨詢工程師 安全工程師 建筑九大員 注冊電氣工程師 一級注冊建筑師 公路水運檢測 通信工程 裝配式工程師 二級注冊建筑師 智慧消防工程師 智慧建造工程師 全過程工程咨詢師 EPC工程總承包 碳排放管理師 初級會計師 中級會計師 注冊會計師(cpa) CFA ACCA CMA 基金從業 證券從業 會計證 初中級經濟師 薪稅師 會計實操 企業合規師 FRM 會計就業 教師資格 人力資源管理 導游考試 心理咨詢師 健康管理師 家庭教育指導師 普通話 公共營養師 物流師 網絡主播 專利代理師 教師招聘 籃球 少兒編程 書法培訓 繪畫美術 音樂 舞蹈 棋類 國畫 樂器 機器人編程 小孩子注意力訓練 兒童專注力 兒童情緒管理 少兒小主播 信奧賽C++ 籃球 嵌入式培訓 軟件測試 Web前端 linux云計算 大數據 C/C++開發 電子商務 Java開發 影視后期 剪輯包裝 游戲設計 php 商業插畫 產品經理 Python photoshop UXD全鏈路 UI設計 室內設計 電商視覺設計 IT認證 PMP項目管理

日韩综合久久_日本一区免费在线观看_国内外一级毛片_中文字幕日本一本二本三区

          9000px;">

                  亚洲欧美日韩国产一区二区三区 | 亚洲最大成人网4388xx| 亚洲观看高清完整版在线观看| 国产精品一区二区三区99| 宅男在线国产精品| 日韩黄色免费电影| 在线视频国产一区| 欧美日本不卡视频| 日本va欧美va精品发布| 欧美亚洲国产一卡| 一区二区三区中文免费| www.欧美亚洲| 亚洲欧美日韩国产成人精品影院 | 日韩区在线观看| 亚洲成av人片在线| 99久久精品免费看国产免费软件| 欧美一区二区视频免费观看| 欧美色倩网站大全免费| 成人欧美一区二区三区小说| 欧美一级搡bbbb搡bbbb| 一区二区在线观看av| 久久女同互慰一区二区三区| 中文一区一区三区高中清不卡| 精品一二线国产| 亚洲精品自拍动漫在线| 91同城在线观看| 正在播放亚洲一区| 蜜臀久久久99精品久久久久久| 成人视屏免费看| 亚洲三级电影全部在线观看高清| 亚洲成av人片一区二区梦乃| 亚洲视频在线一区二区| thepron国产精品| 成人h动漫精品| 亚洲少妇屁股交4| 麻豆成人久久精品二区三区小说| 欧美男男青年gay1069videost | 亚洲第一会所有码转帖| 欧美日韩一区二区三区视频| 中文字幕一区二区不卡| 欧美色图在线观看| 麻豆精品在线观看| 国产精品网站在线| 亚洲国产精品久久久久婷婷884 | 中文在线一区二区| 色婷婷综合久久久中文一区二区| 7777精品久久久大香线蕉| 久久99精品国产.久久久久 | 1区2区3区精品视频| 色综合天天综合在线视频| 亚洲一区二区美女| 美女在线视频一区| 国产精品乱子久久久久| 午夜视频在线观看一区| 久久影音资源网| 亚洲日本一区二区| 国产成人亚洲综合a∨婷婷| 国产精品美女久久久久久2018 | 欧美日韩你懂得| 精品一区二区在线免费观看| 国产精品久久久久久久久快鸭| 欧美色综合天天久久综合精品| 极品少妇xxxx精品少妇| 一区二区三区小说| 欧美国产精品久久| 欧美一级视频精品观看| 亚洲欧美影音先锋| 久久亚洲欧美国产精品乐播| 午夜精品视频一区| 国产91高潮流白浆在线麻豆| 99久久er热在这里只有精品66| 精品国产网站在线观看| 9191久久久久久久久久久| 久久婷婷色综合| 欧美日韩一级视频| 91天堂素人约啪| 国产69精品久久99不卡| 日本怡春院一区二区| 亚洲综合免费观看高清在线观看| 成人性生交大片免费看视频在线| 日韩国产精品久久久| 日本亚洲欧美天堂免费| 亚洲综合丁香婷婷六月香| 3d动漫精品啪啪1区2区免费| 国产一区二区在线电影| 九九国产精品视频| 老司机精品视频一区二区三区| 丝袜亚洲另类欧美| 在线观看日韩电影| 五月婷婷综合在线| 日韩国产欧美在线播放| 日韩av电影天堂| 日本三级韩国三级欧美三级| 视频在线观看一区| 亚洲人成影院在线观看| 成a人片亚洲日本久久| 国产精品网曝门| 日韩欧美国产一区在线观看| 亚洲不卡在线观看| 日本欧美一区二区三区| 日韩三级视频在线观看| 国产成人在线影院| 久久久美女毛片| 亚洲精品网站在线观看| 奇米影视一区二区三区小说| 国产精品免费视频网站| 欧美亚洲图片小说| 99久久国产综合精品麻豆| 日韩午夜精品视频| 亚洲狠狠丁香婷婷综合久久久| 国产主播一区二区三区| 久久国产精品无码网站| 91在线观看视频| 久久久精品中文字幕麻豆发布| 欧美肥大bbwbbw高潮| 成人黄动漫网站免费app| 欧美一区二区三区日韩视频| 日韩欧美一区二区三区在线| 亚洲男人的天堂av| 亚洲国产一区视频| 成人中文字幕合集| 亚洲精品视频在线观看免费| 国内成+人亚洲+欧美+综合在线| 国产高清一区日本| 中文字幕亚洲不卡| 亚洲国产精品精华液2区45| 亚洲欧美视频在线观看| 国内久久婷婷综合| 国产成人99久久亚洲综合精品| 91黄色免费网站| 亚洲午夜电影在线| 天天av天天翘天天综合网色鬼国产| 黄色小说综合网站| 久久久欧美精品sm网站| 美国十次综合导航| 九九九精品视频| 欧美精品一二三区| 亚洲成人www| 欧美午夜理伦三级在线观看| 成人免费视频一区二区| 国产在线精品一区在线观看麻豆| 欧美一二三区精品| 国产精品美女久久久久久久| 天天色综合天天| 91色|porny| 精品国产伦理网| 国产999精品久久| 国产精品久久久久影院亚瑟| 亚洲第一成人在线| 成人自拍视频在线| 国产电影精品久久禁18| 国产精品久久毛片av大全日韩| 亚洲一二三四在线| 日韩女优毛片在线| 中文字幕色av一区二区三区| 亚洲女人的天堂| 国产婷婷一区二区| 日韩女优视频免费观看| 久久精品亚洲国产奇米99 | 一本久久精品一区二区| 精品国产乱码久久久久久久久| 国产欧美一区二区精品性色| 污片在线观看一区二区| 99久久国产综合色|国产精品| 欧美日韩一区高清| 亚洲va国产va欧美va观看| 国产乱理伦片在线观看夜一区| 一本大道综合伊人精品热热 | 日韩福利电影在线观看| 欧美视频中文一区二区三区在线观看| 欧美无砖专区一中文字| 五月天激情综合网| 欧美日本一道本| 久久国产精品免费| 欧美日韩精品一二三区| 亚洲精品日日夜夜| 欧美日韩你懂得| 日本sm残虐另类| 91日韩精品一区| 视频一区二区欧美| 91精品久久久久久久99蜜桃| 久久精品国产99国产| 亚洲欧美日韩人成在线播放| 欧美精品第1页| 成年人网站91| 精品一区精品二区高清| 亚洲少妇30p| 国产调教视频一区| 欧美肥妇bbw| 欧美体内she精高潮| 精品一区二区国语对白| 五月天欧美精品| 亚洲欧美日韩人成在线播放| 在线播放日韩导航| 欧美亚洲一区二区在线| 色综合久久久久综合体| 免费高清在线一区| 蜜臂av日日欢夜夜爽一区| 青娱乐精品在线视频| 日本sm残虐另类|