比較排序的方法

2021-10-24 14:48:33 字數 1482 閱讀 1766

排序的演算法主要有兩種:比較排序非比較排序

比較排序,時間複雜度o(nlogn) ~ o(n^2),主要有:氣泡排序,選擇排序,插入排序,歸併排序,堆排序,快速排序等。

非比較排序,時間複雜度可以達到o(n),主要有:計數排序,基數排序,桶排序等。

本文主要講解比較排序中的氣泡排序、選擇排序、插入排序

1、氣泡排序

它重複地遍歷過要排序的元素,依次比較相鄰兩個元素,如果他們的順序錯誤就把他們調換過來,直到沒有元素再需要交換,排序完成。越小(或越大)的元素會經由交換慢慢「浮」到數列的頂端。

2、選擇排序

初始時在序列中找到最小(大)元素,放到序列的起始位置作為已排序序列;然後,再從剩餘未排序元素中繼續尋找最小(大)元素,放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。

3、插入排序

將一組資料分為有序序列和無序序列,一般將左邊定為有序序列,右邊為無序序列。對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。

**實現如下:

#include

using

namespace std;

class

sort

int*

buble()

;void

print()

;int

*selectsort()

;int

*insertsort()

;private

:int

*_a;

int num;};

void sort::

print()

}int

* sort::

buble()

//氣泡排序}}

return _a;

}int

* sort::

selectsort()

//選擇排序

if(minindex != i)

}return _a;

}int

* sort::

insertsort()

//插入排序

_a[j+1]

= temp;

}return _a;

}int

main

(int argc,

char

*ar**)

;int n =

sizeof

(a)/

sizeof

(a[0])

;

sort s

(a, n)

;

s.insertsort()

;

s.print()

;return0;

}

排序方法比較

根據排序的原則,內排序可以分為 預備知識 1.等差數列之和 s n a1 an 2 等比數列之和 s a1 1 q n 1 q 2.使用哨兵提高效率 比如基本的順序查詢我們可以這樣做 int search int a,int n,int key for int i 0 iif a i key ret...

各種排序方法的比較

簡單排序包括直接插入排序 氣泡排序 和簡單選擇排序。排序方法的穩定性 假設ki kj 1 i n,1 j n,i j 若在排序前的序列中ri領先於rj 即i 證明一種排序方法是穩定的,要從演算法本身的步驟中加以證明。證明排序方法是不穩定的,只需給出乙個反例說明。1 簡單排序法一般只用於n比較小的情況...

各種排序方法的綜合比較

各種排序方法的綜合比較 結論 排序方法 平均時間 最壞時間 輔助儲存 簡單排序 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...