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個數進行排序,...