排序 各種排序方法的實現與比較

2021-06-23 05:40:42 字數 1959 閱讀 3498

排序(各種排序方法的實現與比較)

時間限制

: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...