常用排序演算法?
穩定性:穩定排序演算法會讓原本有相等鍵值的紀錄維持相對次序。也就是如果乙個排序演算法是穩定的,當有兩個相等鍵值的紀錄r和s,且在原本的列表中r出現在s之前,在排序過的列表中r也將會是在s之前。
氣泡排序演算法:
比較相鄰的元素,按照順序進行交換,一次遍歷後,就會有乙個最大(最小)交換至頂端,重複步驟即可。
python實現:
arr = [54,26,93,17,77,31,44,55,20]
#bubble
def bubblesort(arr):
for i in range(len(arr),0,-1):
for j in range(i - 1):
if(arr[j] > arr[j + 1]):
arr[j+1], arr[j] = arr[j], arr[j+1]
bubblesort(arr)
print(arr)
c++實現:
void bubblesort(vector& arr)
} }}vectorarr;
bubblesort(arr);
for (int i = 0; i < arr.size(); i++)
插入排序演算法:
通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。插入排序在實現上,在從後向前掃瞄過程中,需要反覆把已排序元素逐步向後挪位,為最新元素提供插入空間。
python實現:
arr = [54,26,93,17,77,31,44,55,20]
def insertsort(arr):
for i in range(1, len(arr)):
for j in range(i,0,-1):
if(arr[j - 1] < arr[j]):
arr[j - 1], arr[j] = arr[j], arr[j - 1]
insertsort(arr)
print(arr)
c++實現:
void insertsort(vector& arr)
} }}vectorarr;
insertsort(arr);
for (int i = 0; i < arr.size(); i++)
歸併排序演算法:
歸併排序的思想就是先遞迴分解陣列,再合併陣列。
python實現:
arr = [54,26,93,17,77,31,44,55,20]
def mergesort(arr):
if(len(arr) < 2):
return arr
mid = int(len(arr)/2)
l_arr = mergesort(arr[:mid])
r_arr = mergesort(arr[mid:])
#merge
result =
l, r = 0,0
while(l < len(l_arr) and r < len(r_arr)):
if(l_arr[l] < r_arr[r]):
l += 1
else:
r += 1
result += l_arr[l:]
result += r_arr[r:]
return result
arr = mergesort(arr)
print(arr)
c++實現
void mergesort(vector& arr, int start, int end )
int mid = start + (end - start) / 2;
mergesort(arr, start, mid);
mergesort(arr, mid + 1, end);
//merge
int left = start;
int right = mid + 1;
vectortemp;
while (left <= mid && right <= end)
else
} while (left <= mid)
while (right <= end)
for (int i = start; i <= end; i++)
}vectorarr;
mergesort(arr, 0, arr.size() - 1);
for (int i = 0; i < arr.size(); i++)
std中穩定排序演算法 八大經典排序演算法
一 插入排序 直接插入排序 straight insertion sort 直接插入排序 straight insertion sort 的基本思想是 把n個待排序的元素看成為乙個有序表和乙個無序表。開始時有序表中只包含1個元素,無序表中包含有n 1個元素,排序過程中每次從無序表中取出第乙個元素,將...
穩定排序和非穩定排序
首先,排序演算法的穩定性大家應該都知道,通俗地講就是能保證排序前2個相等的數其在序列的前後位置順序和排序後它們兩個的前後位置順序相同。在簡單形式化一下,如果ai aj,ai原來在位置前,排序後ai還是要在aj位置前。其次,說一下穩定性的好處。排序演算法如果是穩定的,那麼從乙個鍵上排序,然後再從另乙個...
演算法 4 穩定排序和不穩定排序
首先,排序演算法的穩定性大家應該都知道,通俗地講就是能保證排序前2個相等的數其在序列的前後位置順序和排序後它們兩個的前後位置順序相同。在簡單形式化一下,如果ai aj,ai原來在位置前,排序後ai還是要在aj位置前。其次,說一下穩定性的好處。排序演算法如果是穩定的,那麼從乙個鍵上排序,然後再從另乙個...