資料結構 排序

2021-07-11 08:33:26 字數 1481 閱讀 4380

1.希爾排序  shellsort

增量序列d =  

n為要排序數的個數

void shellinsertsort(int a, int n, int dk)  //n個要排序的數,dk是增量

}

2、堆排序

/** 

* 已知h[s…m]除了h[s] 外均滿足堆的定義

* 調整h[s],使其成為大頂堆.即將對第s個結點為根的子樹篩選,

* * @param h是待調整的堆陣列

* @param s是待調整的陣列元素的位置

* @param length是陣列的長度

* */

void heapadjust(int h,int s, int length)

/**

* 堆排序演算法

*/

void heapsort(int h,int length)

}

3、歸併排序,這裡用到的是leetcode裡面的題作為例子來說明

/**

* definition for singly-linked list.

* struct listnode

* };

*/ //歸併

class solution

listnode* merge(listnode *lh,listnode *rh) //歸併兩個鍊錶

if(lh->val>rh->val)

p=p->next;

}if(lh!=null) p->next=lh;

if(rh!=null) p->next=rh;

temp=temp->next;

return temp;

}listnode* mergesort(listnode* head) //歸併排序

pre->next=null;

listnode *lhalf=mergesort(head);

listnode *rhalf=mergesort(p);

return merge(lhalf,rhalf);

}};

3、插入排序,也是用的leetcode裡面的題

我的思路:題目中是以鍊錶的形式給出的,由於鍊錶很難操作,我先將煉表裡的資料放在vector容器裡,將容器裡的序列進行排序,然後再轉換成鍊錶的形式。

/**

* definition for singly-linked list.

* struct listnode

* };

*/class solution

for(int i=1,j;i0&&tval=a[i];

p=p->next;

}return res;}}

};

資料結構 排序

小小總結了下 希望別不記得 排序型別 排序方法 平均時間 最壞時間 最好時間 穩定空間 插入直接插入 o n2 o n2 o n 穩定o 1 希爾排序 o n3 2 增量序列最後為1,只有公因子1 不穩o 1 選擇簡單選擇 o n2 o n2 o n 穩定o 1 堆排序o n lb n o n lb...

資料結構 排序

郝斌版 資料結構 學習筆記 冒泡 公升序,12比,大放後面,再23比,直至最大的在最後面 插入 2,3,4,依次插入值,保證插入值後的序列為有序的 選擇 後面所有的最小值依次排到最前 快速排序 歸併排序 22排,44排,88排.排序演算法標準 時間,空間,穩定性 排序和查詢的關係 排序是查詢的前提,...

資料結構 排序

1 對n個數字進行排序,期中兩兩不同的數字的個數為k,n遠遠大於k,而n的取值區間長度超過了記憶體的大小,時間複雜度最小可以是?兩兩不同的數字的個數為k,因為不知道確定的數字範圍,桶排序不適合,又因為 n遠遠大於k,本題使用hash表來統計,首先獲得k個數及其每個數出現的次數,然後對k個數進行排序,...