小知識系列(4) 結構體和sort快速入門

2021-10-12 12:26:47 字數 2733 閱讀 4396

儘管網上有很多優質的文章來具體詳細的闡述結構體或sort的用法,但是仍然不妨礙寫這麼一篇小文章來幫助一些像我一樣的初學者快速的認識結構體和sort的用法,我們不會深究更深層次的東西,如果有興趣的可以在其他部落格上檢視。

首先我們要知道,什麼是結構體?

通俗的來講,結構體就是把很多個變數放到乙個變數裡,以達到簡化的目的。(例如,我要統計乙個成績,我需要的變數有:①學生姓名②性別③學號④xx科分數……這時我們就可以用結構體來簡化操作)而且結構體的交換是結構體內所有引數的交換(牽一髮而動全身?)

結構體分析

結構體型別就是struct,我們拿乙個模板來說:

struct nodea[

100]

;

我們逐句分析:

首先,struct是構建結構體必須有的必要宣告。

第二,node是習慣上的命名,因為是乙個命名,所以說可以改變(如 struct abc 也是可以的),這時,node就變成了結構體型別的化身,這裡就需要好好說明一下,上句話的意思就是說:node變成了和int,double一樣的型別名稱,在你宣告struct node之前,node是一串沒有意義的字元。一旦宣告,node的地位和int,double是相同的,即你可以node x,來宣告x是乙個結構體變數,這樣x就有了引數

第三,裡面的引數可以隨意定義,可以寫在一行,也可以分行寫,可以寫字元型別,整數,實數,甚至是再加乙個結構體型別。當用到結構體時,只要在後面加乙個.(點)就可以引用引數。

結構體的引數是十分關鍵的!!

第四,一般來說,結構體都會用到陣列,可以在「;」之前定義

struct node

;struct ndoex;

struct nodex[

200]

;

以上定義方法都是可以的,其他的方法還有:

struct node

;node x;

結構體具體的用法:

struct nodea[

200]

;int

main()

}

從上面我們能發現,習慣上把結構體定義在main函式外。我們要給結構體的某個引數賦值時,一定要指定某個引數!!(如,我要輸入名字cin>>a[i].name。輸出也是同樣的道理)你若是不指定引數計算機怎麼會知道你要把誰賦給誰呢??

sort和結構體絕配

什麼是sort?

sort是乙個陣列排序函式,當資料較小的時候非常簡便。他可以按照指定的規則去排序一串數字。(規則是由我們來制定的,非結構體的陣列預設是從小到大,結構體陣列必須要制定規則!

c語言中用到sort需要有:

#include

using

namespace std;

這似乎已經是c++了??

建議直接用萬能標頭檔案

#include

using

namespace std;

解析:

a[

100]

sort

(a,a+n,cmp)

a表示起始位置

a+n是表示排序的範圍

cmp則是要制定的規則(非結構體陣列可省略)

在這裡是從陣列a的0開始到n-

1cmp只是乙個名字,可以任意規定,它是乙個函式。

sort

(a,a+n)也是可以的

以上是從a[0]開始輸入,輸入n個,但是我個人比較喜歡從1開始輸入,這時的排序就要從1開始

sort

(a+1,a+

1+n,cmp)

cmp排序規則的制定:

我們要在main函式外寫乙個排序的函式,

一般來說可以用bool型別或者int型別(bool型別只返回1或0)

bool

cmp(node x,node y)

在這裡我們用結構體型別舉例,進入函式的型別也應該是結構體型別,用node來表示而不是int!

bool

cmp(node x,node y)

當是小於號就表示前面的數小(即公升序排列123456)

當是大於號就表示前面的數大(即降序排列654321)

一定要注意!!比較什麼引數就.什麼

如果是多次比較(如果score1相同就比較score2)

bool

cmp(node x,node y)

如果完成了以上工作,那麼恭喜你,你的數列已經排列好了,只需要輸出就可以了。

結構體是乙個單獨的型別,如果x是結構體型別,y是整數型別,x=y就是錯誤的!!但是如果x裡面有乙個引數 score是整數型別就可以 x.score=y;

一定不能亂!

以上只是鄙人的拙見,如有不足之處,敬請斧正,如有難以理解的地方,亦可以指出。

結構體小知識課堂

結構體又稱自定義資料型別,可表示為 struct 型別名 例如我們需要統計乙個學生的姓名 年齡等資訊這個時候我們就需要用到結構體 struct student char name 20 int age 自定義資料型別,定義完成以後,等同於內建型別 這句話如何理解呢我們看下面 int main 在這裡...

python小知識,sort和serted的區別

列表物件sort 方法和內建sorted 函式的作用基本相同,但,不同的是sort會改變原有列表的順序,而sorted不會 具體示例如下 create 2020年12月19日 作用 說明sort和sorted的區別 列表物件sort 方法和內建sorted 函式的作用基本相同,但,不同的是sort會...

hdoj1236排名 sort快排,結構體

problem description 今天的上機考試雖然有實時的ranklist,但上面的排名只是根據完成的題數排序,沒有考慮 每題的分值,所以並不是最後的排名。給定錄取分數線,請你寫程式找出最後通過分數線的 考生,並將他們的成績按降序列印。input 測試輸入包含若干場考試的資訊。每場考試資訊的...