首页 > 代码库 > 堆排序
堆排序
利用数组0位置作为守卫
#define LeftChild(i) (2*(i)+1) void PercDown(ElementType A[], int i, int N) { int child; ElementType tmp; for (tmp=A[i]; LeftChild(i)<N; i=child) { child = LeftChild(i); if (child != N-1 && A[child + 1]>A[child]) { child++; } if (tmp < A[child]) { A[i] = A[child]; } else break; } A[i] = tmp; } void Heapsort(ElementType A[], int N) { int i; for (i=N/2; i>=0; i++) { PercDown(A, N); } for (i=N-1; i>0; i--) { swap(&A[0], &A[i]); PercDown(A, 0, i); } }
堆排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。