利用STL比較資料大小並排序

2021-10-10 11:01:51 字數 1424 閱讀 4008

本題目要求讀入n個整數(輸入數字個數根據輸入時隨機確定,以輸入乙個非數字的值作為輸入結束標誌),利用stl比較資料大小並排序(由小到大公升序),然後輸出排序後的資料。

輸入格式:

輸入在一行中依次輸入整數值,每個數字之間用空格分隔,輸入數字個數根據輸入時隨機確定,以輸入乙個非數字的值作為輸入結束標誌。

輸出格式:

先輸出一段提示「從標準裝置讀入資料,直到輸入是非整型資料為止」,在輸入一組數字後,輸出排序後的數字,在一行中由小到大依次輸出所有值,數字之間用空格分隔。

輸入樣例:

10 3 -2 8 20 -9 e

輸出樣例:

從標準裝置讀入資料,直到輸入是非整型資料為止

-9 -2 3 8 10 20

很簡單的題目,只需要懂得利用stl裡的list和sort函式就行

值得注意的是,題目要求用到乙個判斷最後乙個非數字的值作為結束標誌,這裡是這麼寫的

int a;

while

(cin >> a)

while(cin>>a)的呼叫,這裡並不是cin的返回值,而是》操作過載函式istream& operator>>(istream&, t &);的返回值,其中第二個引數由cin>>後續引數型別決定。

其返回值型別為istream&型別,大多數情況下其返回值為cin本身(非0值),只有當遇到eof輸入時,返回值為0。

也就是說,while判斷是否為true是根據》的返回值來決定,若a不是int型,就會為false;

而cin輸入時遇到空格或者[enter]會結束,這樣剩餘的數字會保留在緩衝區等待下一次cin

從而簡單地解決了輸入資料的問題

而關於sort函式,對佇列會進行公升序排序

如果想要進行降序排序,只需要寫乙個函式

bool cmp

(int a,

int b)

在用到sort函式時,只需要在函式裡加上cmp就行

mylist.

sort

(cmp);

#include

#include

#include

using namespace std;

intmain()

mylist.

sort()

; list<

int>

::iterator itor;

cout <<

"從標準裝置讀入資料,直到輸入是非整型資料為止"

begin()

; itor != mylist.

end(

); itor++

) cout << endl;

}

利用STL比較資料大小並排序

本題目要求讀入n個整數 輸入數字個數根據輸入時隨機確定,以輸入乙個非數字的值作為輸入結束標誌 利用stl比較資料大小並排序 由小到大公升序 然後輸出排序後的資料。輸入格式 輸入在一行中依次輸入整數值,每個數字之間用空格分隔,輸入數字個數根據輸入時隨機確定,以輸入乙個非數字的值作為輸入結束標誌。輸出格...

1 2 演算法緒論 利用STL比較資料大小並排序

本題目要求讀入n個整數 輸入數字個數根據輸入時隨機確定,以輸入乙個非數字的值作為輸入結束標誌 利用stl比較資料大小並排序 由小到大公升序 然後輸出排序後的資料。輸入格式 輸入在一行中依次輸入整數值,每個數字之間用空格分隔,輸入數字個數根據輸入時隨機確定,以輸入乙個非數字的值作為輸入結束標誌。輸出格...

非比較排序 歸併排序

一 歸併排序的思想 歸併排序利用了分冶的思想,將一塊待排序的區間,取中間位置,分成兩段區間 然後通過不斷的遞迴,直到每段區間只有乙個數字,這時我們就認為該段區間有序,然後將這相鄰的兩段有序區間合併為乙個有序區間 這樣通過遞迴先 陣列,然後再合併陣列,就完成了歸併排序 二 實現 include inc...