日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

qsort与sort

發布時間:2023/12/20 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 qsort与sort 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?sort()函數是C++中的排序函數其頭文件為:#include<algorithm>頭文件;

?qsort()是C中的排序函數,其頭文件為:#include<stdlib.h>

sort是不需要自己寫compare的,sort默認是升序排列,如果想要降序就需要寫一個compare。

#include<iostream>

#include<algorithm>

using namespace std;//sort用在c++,需要加上這個用語

int cmp(int a,int b)

{

?if(a<b)

?return 1; //升序排列,如果改為 a >b,則為降序,要注意sort()中cmp()的返值只有1和0,不像qsort中存在-1!!!!

?else

?return 0;

}

?

int main(){

?????? inti;

?inta[20];

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

?cin>>a[i];

sort(a,a+5,cmp);????? ???? //范圍,很明顯這里是a+5 注意,這是必要的,如果是a+4最后一個值a[4]就不會參與排序。

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

cout<<a[i]<<endl;

?????? system("pause");

/*system("pause")就是從程序里調用“pause”命令; 而“pause”這個系統命令的功能很簡單,就是在命令行上輸出一行類似于“Press any key to exit”的字,等待用戶按一個鍵,然后返回。*/

?return 0;

}

qsort :

參數:

1 待排序數組首地址 2 數組中待排序元素數量 3 各元素的占用空間大小 4 指向函數的指針,用于確定排序的順序

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);

一級排序:

intcomp(const?void*a,const?void*b) { return?*(int*)a-*(int*)b;升序 }

*(int*)b-*(int*)a;降序



二級排序:

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);


三級排序:

int cmp(const void *a,const void *b)
{
struct node *c=(node *)a;
struct node *d=(node *)b;
if(c->no==d->no)
{
if(c->l==d->l)
{
return c->w-d->w;
}
else return c->l-d->l;
}
else return c->no-d->no;
}

qsort(a,m,sizeof(node),cmp);


總結

以上是生活随笔為你收集整理的qsort与sort的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。