晚上沒啥事,隨手練習寫了下最簡略版本的堆排序,當然,實際上還可以有很多優化~注釋也沒寫…
這裡是草稿~沒事多寫寫,多練練~孰能生巧。
完全版本的改天整理一下再專門寫篇blog來坐下說明,額,這個**沒啥注釋,將就看吧….
#include
#include
#include
void print_arr(int
*arr, int size)
void siftup(int
*arr, int
pos)
}void siftdown(int
*arr, int nowpos, int maxpos)
}}void createheap(int
*arr, int size, int
*p)}
void heapsort(int
*arr, int size)
//memcpy(arr, p, sizeof(int) * size);
free(p);
p = null;
}int main()
; printf("original:\n");
print_arr(arr, 14);
heapsort(arr, 14);
printf("sorted:\n");
print_arr(arr, 14);
return
0;}
original:12
512717
2519
3699
2228
4692
after cerateheap:12
512717
2519
3699
2228
4692
min is
1before siftdown:922
512717
2519
3699
2228
46after siftdown:27
5122217
2519
3699
9228
46 min is
2before siftdown:467
5122217
2519
3699
9228
after siftdown:57
1712
2228
2519
3699
9246
min is
5before siftdown:467
1712
2228
2519
3699
92after siftdown:712
1719
2228
2546
3699
92 min is
7before siftdown:
9212
1719
2228
2546
3699
after siftdown:
1219
1736
2228
2546
9299
min is
12before siftdown:
9919
1736
2228
2546
92after siftdown:
1719
2536
2228
9946
92 min is
17before siftdown:
9219
2536
2228
9946
after siftdown:
1922
2536
9228
9946
min is
19before siftdown:
4622
2536
9228
99after siftdown:
2236
2546
9228
99 min is
22before siftdown:
9936
2546
9228
after siftdown:
2536
2846
9299
min is
25before siftdown:
9936
2846
92after siftdown:
2836
9946
92 min is
28before siftdown:
9236
9946
after siftdown:
3646
9992
min is
36before siftdown:
9246
99after siftdown:
4692
99 min is
46before siftdown:
9992
after siftdown:
9299
min is
92before siftdown:
99after siftdown:
99 min is
99before siftdown:
after siftdown:
sorted:12
571217
1922
2528
3646
9299
over!改天再多寫些,哈哈~
塗鴉 草稿 堆排序(2)
昨天晚上做了個小根堆,從小到大排序。剛剛吃完午飯,沒事幹,就做了個大根堆,從大到小排序,練習練習 不要看昨天的,憑感覺來,直接coding。include include include void print arr int arr,int size printf n void siftdown i...
堆排序 堆排序優化 索引堆排序
堆排序 堆排序優化 索引堆排序 注 堆排序 索引堆排序 都是不穩定的排序。注 索引最大堆排序有誤!有沒有大神可以指點一二?1 堆 所有元素 都從索引0開始 父親結點索引 i 左孩子結點索引 2i 1 右孩子結點索引 2i 2 左後乙個非葉子結點索引 n 1 2 用於構建堆,從最後乙個非葉子結點索引開...
堆排序 堆排序優化 索引堆排序
堆排序 堆排序優化 索引堆排序 注 堆排序 索引堆排序 都是不穩定的排序。注 索引最大堆排序有誤!有沒有大神可以指點一二?1 堆 所有元素 都從索引0開始 父親結點索引 i 左孩子結點索引 2i 1 右孩子結點索引 2i 2 左後乙個非葉子結點索引 n 1 2 用於構建堆,從最後乙個非葉子結點索引開...