交換排序 氣泡排序和快速排序

2021-08-17 17:44:40 字數 1414 閱讀 6744

1. 氣泡排序

(1)演算法思想:將序列中的第乙個元素和第二個元素相比較,如前者大於後者,則交換,否則不交換;再將第二個元素和第三個元素比較,若前者大於後者,則交換兩個元素的位置,否則不交換,依次進行,直到最後乙個元素,經過如此一輪,則n個元素中最大的乙個被放在了最後。此後,再進行相同的過程。

(2)基本實現:

void bubblesort(datatype* arr, int sz)

} }}

(3)演算法效能:

時間複雜度:o(n^2);

空間複雜度:o (1);

穩定性:穩定

2. 快速排序

(1)演算法思想:快速排序的平均時間效能最快。任選序列中的乙個資料元素(通常選取第乙個資料元素或者最後乙個資料元素)作為樞軸,用它和所有剩餘資料元素進行比較,將所有較它小的元素排在它前面,將所有比它大的元素排在它後面,經過一趟排序後,可按此元素所在位置為界,將序列劃分為兩個部分,再重複此過程。

(2)基本實現:

hare演算法:

}挖坑演算法:

}兩指標演算法:

size_t pation3(datatype* arr, int left, int right)

while (cur < sz)

cur++;

} if (++pre != right)

return pre;

}

(3)演算法效能:

時間複雜度:o(n logn);

空間複雜度:o (logn);

穩定性:不穩定

在上面取樞軸的過程中,以最後乙個元素為基準,這樣在一般情況情況下是適用的,但是對於有序的序列來說,效率就比較低了,此時我們可以利用三數取中法來選取樞軸。

int getmiddata(datatype* arr, int left, int right)

else

}

交換排序 氣泡排序 和 快速排序

通過對比大小交換對比的元素所得到的排序為交換排序。冒牌排序時很常見的 通過對比相鄰元素的大小如果前面的元素比後面的大,則交換兩個元素,使得大的元素往後移。一 氣泡排序 二 快速排序,本文重點 快速排序在一次排序中有兩個方向,乙個是從尾部向前 逆向 乙個是從首部標誌 不包括首部標誌 向後 正向 正向和...

交換排序 氣泡排序和快速排序

1 氣泡排序演算法思想及實現 這是最原始,也是眾所周知的最慢的演算法了。基本思想 按待排序序列的先後順序,依次比較相鄰的兩個數,將小數放在前面,大數放在後面 若二者是公升序,則不作任何操作,否則交換兩個數即可 即在第一趟 首先比較第1個數和第2個數,將小數放前面,大數放後面。然後比較第2個數和第3個...

交換排序 氣泡排序和快速排序

這裡的測試資料來自於之前自己隨便寫的生成器 include using namespace std intmain int t 10,arr 20 while t return0 氣泡排序 void bubblesort int arr,int n if flag 0 return 氣泡排序 空間複...