1202 對n個數進行排序

2021-08-14 09:25:09 字數 3244 閱讀 8662

題目**

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 多組輸入...