題目**
2016華科計算機保研機試試題
題目要求
輸入
輸入的一行包括乙個整數n,接下來的一行包括n個整數。
輸出
可能有多組測試資料,對於每組資料,將排序後的n個整數輸出,每個數後面都有乙個空格。每組測試資料的結果佔一行。
樣例輸入:
4 1 4 3 2
樣例輸出:
1 2 3 4
本題是將輸入的n個數進行排序後再按要求的格式輸出,預設為是公升序,如果要求降序需寫乙個降序函式。
最常用的我們就是使用氣泡排序,題目要求n最大是100,那麼時間複雜度就是o(100*100),空間複雜度是o(100),滿足要求。
要求變數:
- n:輸入的整數的個數;
- buf[100]:儲存輸入的資料;
ac**:
#include
#include
int main()
//輸入帶排序的數字
for(int i=0;ifor(int j=0;j1-i;j++)
}}//氣泡排序主體
for(int i=0;iprintf("%d ",buf[i]);
}//輸出排序的的結果,注意格式,每個數字後要新增乙個空格
printf("\n");//輸出換行
}return0;}
/*41 2 4 3
*/
這裡需要我們自己寫排序函式部分,我們也可以使用c++庫中的自帶的排序函式,只需在標頭檔案中加入
#include
然後在函式主題中引用函式sort(begin,end)即可,如果要進行降序輸出,我們要將排序後的結果倒置,函式為:
//進行降序
bool cmp(int x,int y)
過載sort函式:sort(buf,buf+n,cmp);
那麼那麼c++庫中的sort函式是乙個怎樣的形式呢?查閱資料來看一下,具體鏈結是:sort函式定義:
微軟給出了乙個例項程式,通過**我們很容易的明白怎麼使用sort函式:
// alg_sort.cpp
// compile with: /ehsc
#include
#include
#include // for greater( )
#include
// return whether first element is greater than the second
bool udgreater ( int elem1, int elem2 )
int main( )
int ii;
for ( ii = 0 ; ii <= 5 ; ii++ )
cout
<< "original vector v1 = ( " ;
for ( iter1 = v1.begin( ) ; iter1 != v1.end( ) ; iter1++ )
cout
<< *iter1 << " ";
cout
<< ")"
<< endl;
sort( v1.begin( ), v1.end( ) );
cout
<< "sorted vector v1 = ( " ;
for ( iter1 = v1.begin( ) ; iter1 != v1.end( ) ; iter1++ )
cout
<< *iter1 << " ";
cout
<< ")"
<< endl;
// to sort in descending order. specify binary predicate
sort( v1.begin( ), v1.end( ), greater( ) );
cout
<< "resorted (greater) vector v1 = ( " ;
for ( iter1 = v1.begin( ) ; iter1 != v1.end( ) ; iter1++ )
cout
<< *iter1 << " ";
cout
<< ")"
<< endl;
// a user-defined (ud) binary predicate can also be used
sort( v1.begin( ), v1.end( ), udgreater );
cout
<< "resorted (udgreater) vector v1 = ( " ;
for ( iter1 = v1.begin( ) ; iter1 != v1.end( ) ; iter1++ )
cout
<< *iter1 << " ";
cout
<< ")"
<< endl;
輸出結果為:
original vector v1 = ( 024
68101
3579
11 )
sorted vector v1 = ( 012
3456
78910
11 )
resorted (greater) vector v1 = ( 11109
8765
4321
0 )
resorted (udgreater) vector v1 = ( 11109
8765
4321
0 )
這裡還用到了有關集合的一些知識。
**在進行逆序輸出時用了兩種方法,一種類似於上面cmp函式的方法,另乙個是使用內建的greater struct, greater和less是標頭檔案中定義的兩個結構。下面看它們 的定義,greater和less都過載了操作符(),通過在sort函式中呼叫來進行內建的降序,
sort( v1.begin( ), v1.end( ), greater( ) );
注意使用時要加入標頭檔案functional和引用標準命名空間std!
參考:王道機試書
對10個數進行排序
解題思路 可以採用氣泡排序,每次把相鄰的兩個比較大小,然後把大一點兒的資料放在最後面,這樣第一趟下來,最大的那個數就跑到了最後面,下一次排序就不用跟最後乙個數字比較了,然後倒數第二大的數字會在倒數第二.因此可以使用兩個函式,乙個用於控制每一趟比較的元素個數,乙個用於交換 public class m...
堆排序示例 對n個整數進行排序
堆排序是一種比較高效的演算法.雖然在大規模排序時不及快排,但是這個演算法較容易實現,不易錯 因為沒有用到遞迴 一般規模的排序還是效果不錯的.以下是示例 includeusing namespace std void heapsort int num,int n func decl.int main ...
n個數的排序
n個數的排序 time limit 1000ms memory limit 65536kb problem description leiq當上了體育委員,現在老師讓他去給班級裡的人排隊,leiq剛學了排序,所以他想以這種方式給班級裡的人排隊 從矮到高 他想知道排序完成後的結果。input 多組輸入...