几个写代码的题
解决时间 2021-04-25 02:01
- 提问者网友:王者佥
- 2021-04-24 05:37
1.设计算法生成小根堆并在上实现相关数据的插入删除。
2.设计算法用生成小根堆的函数实现数据的排序。
3.平面上求最短点对算法。
4.给出quicksort的迭代样式。
最佳答案
- 五星知识达人网友:像个废品
- 2021-04-24 05:48
做第二个,这是自己以前写的代码:
#include <stdio.h>
void swap(int* a, int* b)
{
int t;
t = *a; *a = *b; *b = t;
}
void minHeapify(int* a, int i, int n)
{
int l, r, m;
do{
r = (i+1) << 1;
l = r - 1;
m = l < n && a[l] < a[i] ? l : i;
m = r < n && a[r] < a[m] ? r : m;
if(i != m) swap(a+i, a+m), i = m;
else break;
}while(1);
}
void heapSort(int* a, int n)
{
int i;
for(i = (n-1)/2; i >= 0; --i)
minHeapify(a, i, n);
for(i = n-1; i > 0; --i) {
swap(a, a+i);
minHeapify(a, 0, --n);
}
}
void print(int* a, int* b)
{
while(a < b)
printf("%d ", *a++);
putchar('\n');
}
int main()
{
int a[10] = {6,3,1,9,7,4,0,5,8,2};
heapSort(a, 10);
print(a, a+10);
return 0;
}
我要举报
大家都在看
推荐资讯