class
solution
return;}
};
void
bubblesort
(vector<
int>
&arr)}if
(!flag)
break;}
}
void
selectsort
(vector<
int>
&arr)
if(minpos!=i)
swap
(arr[minpos]
,arr[i]);
}}
void
insertsort
(vector<
int>
&arr)
arr[j+1]
=tmp;
}}
void
shellsort
(vector<
int>
&arr)
arr[j+gap]
=tmp;
} gap/=3;
}}
void
merge
(vector<
int>
&arr,
int left,
int mid,
int right)
while
(p<=mid)
tmp[i++
]=arr[p++];
while
(q<=right)
tmp[i++
]=arr[q++];
for(
int j=left;j<=right;j++
) arr[j]
=tmp[j-left];}
void
mergesort
(vector<
int>
&arr,
int left,
int right)
}
void
quicksort
(vector<
int>
&arr,
int left,
int right)
arr[low]
=pivot;
quicksort
(arr,left,low-1)
;quicksort
(arr,low+
1,right);}
}
#
include
using
namespace std;
//大頂堆
class
heap
//上浮
voidup(
int k)
}//下沉,最重要的函式(必會)
void
down
(int k)
}void
createheap()
void
heapsort()
}void
print()
};intmain()
make-set:把每個結點的父結點置為自身,相當於自己是乙個集合
find:向上找到最終父結點
union:讓乙個最終父結點指向另外乙個最終父結點實現合併
統計有多少個連通分量:計算有多少個結點的parent為自身即可。
優化策略:並查集的兩種啟發式策略優化
例題:還是得靠刷題
資料結構與演算法總結
本教材共十一章 第一章為資料結構與演算法概述,為本書學習基礎和預備知識。資料的邏輯結構是對資料之間關係的描述,有時就把邏輯結構簡稱為資料結構。邏輯結構形式地定義為 k,r 或 d,s 其中,k是 資料元素的有限集,r是k 上的關係的有限集。邏輯結構有四種基本型別 集合結構 線性結構 樹狀結構和網路結...
資料結構與演算法 排序演算法總結
排序演算法 1 冒泡 對資料的有序性 敏感,一旦排序完成就會 立刻停止,如果待排序的資料是基本有序的,他的排序效率是非常高的。也是實現最簡單的排序,不易出錯,安全性高。2 插入 在已經有序的資料中,新增新的資料,對這個組資料再進行排序比較適合插入排序。3 選擇 是氣泡排序的變種,不是正統的排序方法,...
資料結構與演算法 排序演算法總結
前言 這是我考研時根據率輝老師的 高分筆記 總結的。名稱 空間複雜度 最好情況下時間複雜度 最差情況下時間複雜度 穩定性直接插入排序 o 1 已經有序,雙層迴圈變為單層,o n o n2 穩定希爾排序 o 1 無o n2 不穩定氣泡排序 o n 已經有序,o n o n2 穩定快速排序 o log2...