《大話資料結構》之快速排序

2021-07-10 04:23:47 字數 956 閱讀 9942

#include #include #include #define max_len 256

typedef struct

sqarr;

void swap(sqarr *ptoswap,int ifirst,int isecond)

}int output(sqarr *psqtoprint)

printf("\n");

return 0;}/*

此種寫法有很大的缺陷,

選low值最為基值,必須先移動high指標,

選high值為基值,必須先移動low指標

*/int partion(sqarr *psqarrtosort,int ilow,int ihigh)

swap(psqarrtosort,ilow,ihigh);

while(ilowiinput[ilow]<=ikey)

swap(psqarrtosort,ilow,ihigh);

} return ilow;}/*

這個寫法也有侷限性

如果選擇low值為key值,需要做出改動

*/int partion_l2(sqarr *psqarrtosort,int ilow,int ihigh)

{ int iindex = ilow - 1;

int iloop = ilow;

int ikey = psqarrtosort->iinput[ihigh];

for(;iloopiinput[iloop]

這個函式的思想,取自《演算法導論》第三版

這個函式也是有缺陷的:如果選擇low值為key值,當前的**是不適用的,需要調整。

int partion(sqarr *psqarrtosort,int ilow,int ihigh)

這個劃分的方式也有缺陷:

選low值最為基值,必須先移動high指標

選high值為基值,必須先移動low指標

大話資料結構之堆排序

堆排序思想 將待排序的序列構造成乙個大頂堆。整個序列的最大值就是堆頂的根節點。將它移走 就是將其與堆陣列的末尾元素交換,此時末尾元素就是最大值 然後將剩餘的n 1個序列重新構造成乙個堆,這樣就會得到n個元素中的次大值。如此反覆執行,便能得到乙個有序序列。堆排序的時間複雜度 o nlogn 堆 完全二...

《大話資料結構》 排序

排序的穩定性 ri rj,在排序前ri領先於rj,如果排序後ri仍然領先於rj,則稱為所用的排序演算法是穩定的 反之,若可能使得排序後rj領先於ri,則稱為該排序演算法是不穩定的。內排序和外排序 內排序 排序的整個過程中,待排序的所有記錄全部存放在記憶體中。常見的內排序演算法有 氣泡排序 簡單選擇排...

資料結構排序之快速排序

本來昨天晚上就可以把快速排序發上去,沒想到昨晚csdn竟然維護,那麼就只能在停電的情況下下用學校的卡的要死的網發這快速排序了,不停多好,停電了還得自己掏腰包買個充電檯燈,裝的好像像學霸一樣,實際就是乙個大學渣,我也就不jjyy,直接說快速排序的思想,我是這樣理解的,用乙個變數作為基準,在拿出i和j兩...