堆排序
2010-06-28 23:15
127 查看
#include <stdio.h>
void heapadjust(int arr[],int s,int m)
{
int rc = arr[s],j;
for(j=s*2;j<=m;j=j*2)
{
if(j<m&&arr[j]<arr[j+1])j++;
if(rc>=arr[j])break;
arr[s] = arr[j];
s = j;
}
arr[s] = rc;
}
void heapsort(int arr[],int n)
{
int i,t;
for(i=n/2;i>=1;i--)
heapadjust(arr,i,n);
for(i=n;i>1;i--)
{
t = arr[i];
arr[i] = arr[1];
arr[1] = t;
heapadjust(arr,1,i-1);
}
}
int main()
{
int arr[11],i;
for(i = 1;i < 11;i++)
scanf("%d",&arr[i]);
heapsort(arr,10);
for(i = 1;i < 11;i++)
printf("%d ",arr[i]);
putchar('/n');
system("pause");
return 0;
}
void heapadjust(int arr[],int s,int m)
{
int rc = arr[s],j;
for(j=s*2;j<=m;j=j*2)
{
if(j<m&&arr[j]<arr[j+1])j++;
if(rc>=arr[j])break;
arr[s] = arr[j];
s = j;
}
arr[s] = rc;
}
void heapsort(int arr[],int n)
{
int i,t;
for(i=n/2;i>=1;i--)
heapadjust(arr,i,n);
for(i=n;i>1;i--)
{
t = arr[i];
arr[i] = arr[1];
arr[1] = t;
heapadjust(arr,1,i-1);
}
}
int main()
{
int arr[11],i;
for(i = 1;i < 11;i++)
scanf("%d",&arr[i]);
heapsort(arr,10);
for(i = 1;i < 11;i++)
printf("%d ",arr[i]);
putchar('/n');
system("pause");
return 0;
}
相关文章推荐
- [Unity][Heap sort]用Unity动态演示堆排序的过程(How Heap Sort Works)
- 排序——堆排序
- Go语言用堆排序的方法进行一千万个int随机数排序.
- java实现堆排序
- 堆排序
- 堆排序(Java实现)
- 算法复习之堆排序
- 堆排序
- 四、堆排序
- 序列——堆排序-大根堆(堆大顶)
- 堆排序(算法导论)
- 堆排序
- 快排与堆排序、归并排序的比较
- 堆与堆排序
- 各种常见的排序,冒泡排序,选择排序,插入排序,希尔排序,堆排序,快速排序,基数排序,桶排序
- 经典排序算法 -----冒泡排序,插入排序,快速排序,归并排序,堆排序
- 建堆,以及对堆排序
- HeapSort 堆排序 基于伪代码实现
- 数据结构学习笔记5-寻找最小的k个数(选择排序和堆排序)
- 堆排序