建设银行网站登录密码,重庆市建筑信息网查询,网站用图片做背景图片,做网站哪家强1.设计思路 排序的思想将一个数组按递增的顺序进行排序#xff0c;将数组的第一个位置空下#xff08;下标为0#xff09;#xff0c;因为会导致子节点和本身同一个结点#xff08;i和2i一致#xff09;#xff0c;每次堆排序在下标1的位置放上了最大值#xff0c;然后…1.设计思路 排序的思想将一个数组按递增的顺序进行排序将数组的第一个位置空下下标为0因为会导致子节点和本身同一个结点i和2i一致每次堆排序在下标1的位置放上了最大值然后和最后一个元素交换位置使之最大值依次放在最后的位置上最后得到一个递增序列。
2. 源代码
#includestdio.h
#includestdlib.h
void HeapSort(int a[], int n)
{ int end8,x,y,z; // 进行堆排序每次找出最大值放在第一个元素位置 while(end-1){while(1){ int paend/2,tag0;while(pa0){if(a[pa]a[2*pa]){xa[pa];a[pa]a[2*pa];a[2*pa]x;tag1;}if(2*pa1enda[pa]a[2*pa1]){ya[pa];a[pa]a[2*pa1];a[2*pa1]y;tag1;}pa--;}if(!tag) break;} // 将找出的最大值与最后一个元素调换位置 za[1];a[1]a[end];a[end]z; end--;}
}
int main(void)
{int i;int a[9]{-1,3,2,5,8,4,9,6,7};HeapSort(a,9);for( i1;i9;i) // 输出整体调整后的数组 {printf(%3d,a[i]);}printf(\n);return 0;
}3.运行结果