昨天晚上做了個小根堆,從小到大排序。
剛剛吃完午飯,沒事幹,就做了個大根堆,從大到小排序,練習練習~
不要看昨天的,憑感覺來,直接coding。
#include
#include
#include
void print_arr(int
*arr, int size)
printf("\n");
}void siftdown(int
*arr, int nowpos, int maxposs)
}}void siftup(int
*arr, int nowpos)
}void createheap(int
*arr, int size, int
*p)}
void heapsort(int
*arr, int size)
free(p);
p = null;
}int main()
; printf("original data:\n");
print_arr(arr, 14);
heapsort(arr, 14);
printf("sorted data:\n");
print_arr(arr, 14);
return
0;}
估計我這的這個**有很多bug~呃呃,意思大概就是這樣。
沒事的時候敲點**玩~
塗鴉 草稿 堆排序(1)
晚上沒啥事,隨手練習寫了下最簡略版本的堆排序,當然,實際上還可以有很多優化 注釋也沒寫 這裡是草稿 沒事多寫寫,多練練 孰能生巧。完全版本的改天整理一下再專門寫篇blog來坐下說明,額,這個 沒啥注釋,將就看吧 include include include void print arr int a...
排序演算法(2) 選擇排序 堆排序
繼續上篇的 交換排序 氣泡排序 快速排序,本篇介紹選擇排序和堆排序 一 選擇排序 非常的簡單直觀,每次找出最小或者最大的值儲存起來,繼續找剩下的值儲存起來,直達最後乙個元素。從arr 0 arr n 中找出最小的值,放在arr 0 此時arr 0 已經排好序 從arr 1 arr n 中找出最小的值...
排序2 選擇排序 選擇排序 堆排序
選擇排序,依次找到資料集n n 1 n 2 中比它大 小的最大 最小者,最終達到全部資料有序。1 選擇排序 直接的依次找到資料集合n n 1 n 2.的最大 最小者形成排序,非常好理解。選擇排序可能是和氣泡排序一樣,最直觀能想到的排序方法。顯然選擇排序和氣泡排序一樣,無所謂最好 最壞 平均,選擇排序...