排序(各種排序方法的實現與比較)
時間限制
:20 sec
記憶體限制
:128 mb
提交:
472 解決:
226[提交
][狀態
][討論版
]題目描述
查詢題,在指導書已經給出了部分參***,目的是讓大家熟悉相關套路。排序這一題,才是大家課程設計的開始。
我為大家準備了一道令人非常愉快的熱身題.即將乙個雜亂無序的整數序列,按照從小到大的順序排列並輸出。
題目雖然簡單,但如果用教材介紹的
9種方法都實現,還是需要一定的基本功和工作量的,希望大家
2天左右完成。
注意:不能呼叫系統排序函式,原始碼中不要出現
sort
,自定義的也不行,換其它名字。
輸入
測試資料不止一組,每組測試資料:
1)先輸入無序序列的整數個數n;
(n不超過
1000000)
2)然後連續輸入
n個整數; 若
n的值輸入為0值,則輸入結束.
輸出
與每組輸入的測試資料相對應,輸出其按從小到大排好序後的整數序列.
注意:每組輸出佔一行.
樣例輸入10
9 8 7 6 5 4 3 2 1 -1 5
88 77 66 55 33 0
樣例輸出
-1 1 2 3 4 5 6 7 8 9
33 55 66 77 88
提示
本題測試對第10章
「內部排序
」的理解程度。
可採用氣泡排序、插入排序、選擇排序、快速排序、希爾排序、堆排序等方法完成此題。
sort
或qsort
等函式!
/*b quicksort*/
# includelong long a[1000001];
void quicksort(long long a,int numsize)
} a[i]=val;
quicksort(a,i);
quicksort(a+i+1,numsize-1-i); }}
void input(long long a,int n)
}void input(long long a,int n)
int first=low;
int last=high;
int key=a[first];//用字表的第乙個記錄作為樞軸
while(first=key)--last;
a[first]=a[last];//將比第乙個小的移到低端
while(firstusing namespace std;
int a[1000001];
/*冒泡*/
void bubblesort(int a,int n)
}/*直接插入*/
void insertsort(int a,int n)
/*堆排序*/
void heapadjust(int a,int s,int m)
a[s]=rc;
}void creatheap(int a,int n)
void heapsort(int a,int n)
}int main()
{ int n;
while(cin>>n&&n!=0)
{ for(int i=1;i<=n;++i)
cin>>a[i];
shellsort(a,n);
for(i=1;i<=n-1;++i)
cout<
各種排序方法的比較
簡單排序包括直接插入排序 氣泡排序 和簡單選擇排序。排序方法的穩定性 假設ki kj 1 i n,1 j n,i j 若在排序前的序列中ri領先於rj 即i 證明一種排序方法是穩定的,要從演算法本身的步驟中加以證明。證明排序方法是不穩定的,只需給出乙個反例說明。1 簡單排序法一般只用於n比較小的情況...
各種排序方法的介紹與比較
前記 這一章中主要對資料排序相關的概念和方法進行了講解,今天的拓展資源就對排序的基本概念 幾種常見排序方法的演算法及優缺點 插入排序的演算法和c語言實現等,同學們多了解一下。排序 是計算機內經常進行的一種操作,其目的是將一組 無序 的記錄序列調整為 有序 的記錄序列。內部排序 若整個排序過程不需要訪...
各種排序方法的綜合比較
各種排序方法的綜合比較 結論 排序方法 平均時間 最壞時間 輔助儲存 簡單排序 o n2 o n2 o 1 快速排序 o nlogn o n2 o logn 堆排序 o nlogn o nlogn o 1 歸併排序 o nlogn o nlogn o n 基數排序 o d n rd o d n rd...