資料結構與演算法之基礎的排序方法

2021-09-27 11:42:57 字數 1563 閱讀 2904

1.按名次排序。思路先將陣列中的元素的序號求出並儲存在乙個陣列中,再建立乙個陣列將目標陣列的元素按序號儲存到該陣列中,再將該陣列複製到目標陣列中,最後刪除該陣列。

複雜度需要n*(n-1)/2次比較和2n次移動所以時間複雜度為o(n^2)

**如下:

//1.計數排序       複雜度需要n*(n-1)/2次比較和2n次移動

void

ranks

(int a,

int n,

int r)

//比較所有元素得到序號

for(

int i=

0;i1;i++

)else}}

}void

ranksort

(int a,

int n,

int r)

for(

int i=

0;i)delete

u;}

2.選擇排序法。思路將整體分為有序和無序兩部分,每次比出最大的放到有序的集合中,直至無序集長度為一。

複雜度需要n*(n-1)/2次比較和3*(n-1)次比較。所以時間的複雜度為:o(n2)

**如下:

//2.選擇排序法    複雜度需要n*(n-1)/2次比較和3*(n-1)次比較。

intindexofmax

(int a,

int n)

}return indexofmax;

}else

}void

selectionsort

(int a,

int n)

}

3.氣泡排序法。每個相鄰的比較將最大的「冒」到最後,每次「冒出」乙個元素,直至長度為一。

複雜度:需要n*(n-1)/2次比較和n*(n-1)/2次交換。所以時間複雜度為:o(n2)

**如下:

//3.氣泡排序法    複雜度:需要n*(n-1)/2次比較和n*(n-1)/2次交換

void

bubblesort

(int a,

int n)

}}

4.插入排序法。原理:將乙個元素插入到乙個有序集合的正確位置中,將第二個元素起依次新增到左邊有序的集合中。

兩種插入排序的比較次數相同,最好是n-1次,最壞是(n-1)*n/2次。所以時間複雜度為:o(n^2)

**如下:

//4.插入排序法  兩種插入排序的比較次數相同,最好是n-1次,最壞是(n-1)*n/2次。

void

insert

(int a,

int n,

const

int x )

void

insertsort

(int a,

int n)

}

所以綜上所述四種排序方法的時間複雜度均為:o(n^2)

資料結構與演算法之排序

三 演算法效能 二 七種排序演算法 資料結構之線性表 資料結構之鍊錶 資料結構之串 資料結構之圖 資料結構之排序演算法 對n個資料執行某種操作,使其按照某種規則有序的排列,這樣的操作就是排序。內排序與外排序 按照排序過程中資料是否全放在記憶體中,可以分為內排序和外排序 交插選並 其中內排序又分為插入...

《資料結構與演算法》之排序

資料結構與演算法 之鍊錶 資料結構與演算法 之鏈棧 資料結構與演算法 之佇列 資料結構與演算法 之二分查詢 資料結構與演算法 之二叉樹 如果你是一名程式設計師,或多或少你都了解過 聽說過排序。在專案中我們也會經常用到排序,排序非常重要,現在我在這裡分享一些經典的排序演算法。先附上demo位址 氣泡排...

資料結構與演算法之排序演算法 氣泡排序

2016年10月18日15 34 24 by piaxiaohui 氣泡排序 是一種交換排序,它的基本思想是 兩兩比較相鄰記錄的關鍵字,如果反序則交換,直到沒有反序的記錄為止。氣泡排序的由來,就有些類似於水中的bubble,比較輕的bubble始終在水的底層,而較輕的bubble在水的上層 較輕的b...