• 35648

    文章

  • 23

    评论

  • 20

    友链

  • 最近新加了很多技术文章,大家多来逛逛吧~~~~
  • 喜欢这个网站的朋友可以加一下QQ群,我们一起交流技术。

数据结构算法学习-排序-堆排序

欢迎来到阿八个人博客网站。本 阿八个人博客 网站提供最新的站长新闻,各种互联网资讯。 喜欢本站的朋友可以收藏本站,或者加QQ:我们大家一起来交流技术! URL链接:https://www.abboke.com/jsh/2019/0729/102756.html 1190000019896874

排序

将一组有顺序的元素按大小(只要定义可以返回true或false的比较关系,非一定数值比较)重新调整顺序。

堆排序

堆排序利用堆这种结构,把要排序的序列插入数组,保证最小堆的性质(父节点小于子节点),依次删除最小元素(在位置0上),并调整保证最小堆性质。

算法实现

#include <stdio.h>
#include <stdlib.h>
#include "elr_heap_int.h"
#include "elr_sort_heap.h"

long long int* elrSortHeap(long long int* arr, int len) {
    int i;
    pHeap tmp;
    if (arr) {
        tmp = elrInitHeap(len);
        for (i = 0; i < len; i++) {
            elrPushHeap(tmp, arr[i]);
        }
        for (i = 0; i < len; i++) {
            arr[i] = elrDeleteHeapMin(tmp);
        }
        elrFreeHeap(tmp);
    }
    
    return arr;
}

调试调用

#include <stdio.h>
#include <stdlib.h>
#include "elr_sort_heap.h"

int main(int argc, char **argv){
    int i;
    long long int arr[] = {6, 2, 4, 1, 3, 5, 0, 8, 9, 7};
    elrSortHeap(arr, 10);
    printf("%d\n", (int)(sizeof(arr) / sizeof(long long int)));
    for (i = 0; i < 10; i++) {
        printf("%lld   ", arr[i]);
    }
    printf("\n");
    return 0;
}

输出

insert:6   
insert:2   6   
insert:2   6   4   
insert:1   2   4   6   
insert:1   2   4   6   3   
insert:1   2   4   6   3   5   
insert:0   2   1   6   3   5   4   
insert:0   2   1   6   3   5   4   8   
insert:0   2   1   6   3   5   4   8   9   
insert:0   2   1   6   3   5   4   8   9   7   
delmin:1   2   4   6   3   5   7   8   9   
delmin:2   3   4   6   9   5   7   8   
delmin:3   6   4   8   9   5   7   
delmin:4   6   5   8   9   7   
delmin:5   6   7   8   9   
delmin:6   8   7   9   
delmin:7   8   9   
delmin:8   9   
delmin:9   
0   1   2   3   4   5   6   7   8   9 

相关文章

暂住......别动,不想说点什么吗?
  • 全部评论(0
    还没有评论,快来抢沙发吧!