基礎資料結構演算法 快速排序,堆排序,歸併排序

2021-09-30 14:25:36 字數 880 閱讀 2649

還是把基礎資料結構複習一下吧,演算法雖然簡單,但是想把後面的思想完全領悟還是比較困難的。

這個是排序的三件套,快速排序,堆排序,歸併排序。

快速排序:以第乙個數為支點,把比他小的放前面,比他大的放後面。

完成這一步需要在乙個大迴圈裡巢狀兩個並列的小迴圈。

大迴圈控制是否結束,第乙個小迴圈控制把小數往前移,第二個控制把大數往前移。

然後以支點的位置分別左右遞迴。

#include#include#include#includeusing namespace std;

void quicksort(vector&arr,int x,int y)

else

}while(true)

else

}

}quicksort(arr,l,x-1);

quicksort(arr,x+1,r);

} int main()

else}}

void makeheap(vector&tem,vector&arr)

}int main()

for(int i=x1,c=0;i<=y2;)

arr[i++]=tem[c++];

}

void mergersort_loop(vector&arr)

{int m=2;//合併的總長度,即每個區間為長度為 m/2

int len=arr.size();//把無符號的數轉化為int

while(len>m/2)//能否進行一次合併

{for(int i=0;len-i>m/2;i+=m)//能合併多少次

{if(i+m-1>n;

vectorarr(n);

for(int i=0;i

資料結構 堆排序(演算法)

基本介紹 基本思想 舉例 示例 public class heapsortdemo 1 將無序陣列構建成乙個堆,根據公升序降序需求選擇大頂堆或小頂堆 int k 1 for int i arr.length 2 1 i 0 i 2 將堆頂元素與末尾元素交換,將最大的元素 沉 到陣列末端 3 重新調整...

資料結構排序演算法之堆排序

關於堆排序的相關知識非常複雜,不懂得可以參考任意一本資料結構教程,本部落格只對堆排序框架及 進行講解。堆排序分三個大的步驟 建初堆,堆調整,堆排序 其中最核心的是堆調整 1建初堆 從陣列中的最後乙個非葉子節點開始,從下而上倒推 重複呼叫堆調整函式 2堆調整 堆調整的前提是已建好了乙個堆,但是因為輸出...

資料結構之堆排序與快速排序

堆排序 特性 堆排序,效率高。時間複雜度 o n logn 空間複雜度 o 1 穩定性 不穩定 public static void adjust int array,int start,int end else if array i 0 i for int j 0 j array.length 1...