文档章节

堆排序

老汉-憨憨
 老汉-憨憨
发布于 2017/03/18 12:21
字数 191
阅读 8
收藏 0
#include <stdio.h>
#include <stdlib.h>


void printArr(int arr[], int len)
{
    int i;
    for (i = 0; i < len; i++) {
        printf("%d\t", arr[i]);
    }
    printf("\n");
}

int swap(int *a, int *b)
{
	int tmp = *a;
	*a = *b;
	*b = tmp;
}

void createHeap(int arr[], int len, int root)
{
    int m = root;
	int l = m * 2 + 1;
	int r = m * 2 + 2;
	
	if (l < len && arr[l] > arr[m]) {
		m = l;
	}
	
	if (r < len && arr[r] > arr[m]) {
		m = r;
	}
	
	if (m != root) {
		swap(&arr[m], &arr[root]);
		createHeap(arr, len, m);
	}
}

void heapSort(int arr[], int n)
{
   int i = 0;
   for (i = (n/2)-1; i>=0; i--) {
		createHeap(arr, n, i);
   }
   
   for (i = n -1; i >=0; i--) {
   		swap(&arr[i], &arr[0]);
   		createHeap(arr, i, 0);
   }
}



int main(int argc, char *argv[])
{
    int arr[] = {38, 27, 43, 3, 9, 82, 10};
    int len = sizeof(arr)/sizeof(int);
    
    printf("Raw Arr[] = \t");
    printArr(arr, len);

    heapSort(arr, len);

    printf("Sort Arr[] = \t");
    printArr(arr, len);
    return 0;
}

 

输出结果:

Raw Arr[] =     38      27      43      3       9       82      10
Sort Arr[] =    3       9       10      27      38      43      82

 

© 著作权归作者所有

下一篇: 归并排序
老汉-憨憨
粉丝 20
博文 322
码字总数 68382
作品 0
深圳
程序员
私信 提问

暂无文章

Handler简解

Handler 这里简化一下代码 以便理解 Handler不一定要在主线程建 但如Handler handler = new Handler(); 会使用当前的Looper的, 由于要更新UI 所以最好在主线程 new Handler() { mLooper = Lo...

shzwork
27分钟前
3
0
h5获取摄像头拍照功能

完整代码展示: <!DOCTYPE html> <head> <title>HTML5 GetUserMedia Demo</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum......

诗书易经
30分钟前
3
0
正向代理和反向代理

文章来源 运维公会:正向代理和反向代理 1、正向代理 (1)服务对象不同 正向代理服务器的服务对象是客户端,可以将客户端和代理服务器看作一个整体。 (2)配置方法不同 需要在客户端配置代...

运维团
46分钟前
4
0
5个避免意外论文重复率高的方法

即使你不是故意抄袭,但你可能在无意中抄袭了别人的论文, 这个叫做意外抄袭,它可能正发生在你身上,如果你不熟悉学术 道德规范,这里将告诉你5个基本的方法来避免意外抄袭。 Tip1 熟悉其他...

论文辅导员
48分钟前
4
0
Maven通过profiles标签读取不同的配置

<profiles> <profile> <id>dev</id> <properties> <profiles.active>dev</profiles.active> </properties> ......

时刻在奔跑
53分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部