本題目要求讀入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...