使用堆排序算法

使用堆排序算法(升序,建大堆顶)完善此程序。(注:截图为堆排序初始化后的大堆顶结果,详见源代码)

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define N 10

void input(int a[], int n);
void output(int a[], int n);
void sort(int a[], int n);
void heapadjust(int a[], int loc, int n);

int main(void)
{
	int a[N];
	input(a, N);
	sort(a, N);
	output(a, N);
	return 0;
}

void input(int a[], int n)
{
	int i;
	printf("Input:\n");
	for (i = 0; i < n; i++)
	{
		scanf("%d", &a[i]);
	}
}

void output(int a[], int n)
{
	int i;
	printf("Output:\n");
	for (i = 0; i < n; i++)
	{
		printf("%d ", a[i]);
	}
	printf("\n");
}

void sort(int a[], int n)
{
	int i;
	//int temp; 
	
	//将原始序列初始化为大堆顶 
	for (i = (n-1)/2; i >= 0; i--)
	{
		heapadjust(a, i, n-1); 
	} 
	/* 
	//本段程序是交换第一个和当前最后一个,然后再调整为堆,取消注释则是完整排序算法
	for (i = n - 1; i >= 1; i--)
	{
	temp = a[0];
	a[0] = a[i];
	a[i] = temp;
	heapadjust(a, 0, i-1); 
	} 
	*/ 
}

void heapadjust(int a[], int loc, int n)
{
	/******start******/
	int t;
	int left=2*loc+1, right=2*loc+2;
	int large = loc;
	if (left<n && a[left]>a[large]) {
		large = left;
	}
	if (right<n && a[right]>a[large]) {
		large = right;
	}
	//最大值不是根结点
	if (large != loc) {
		t = a[large];
		a[large] = a[loc];
		a[loc] = t;//交换一下
		heapadjust(a,large,n);//调整子树
	}
	/******end******/
}

         六级考炸了。回想这一年真没有好好碰英语,全靠考前突击了三天,背小红书上的单词和句型。听力果然一个都没听出来,对答案的时候发现臆想的几个答案全是错的,不如直接按首先念的某些单词选选项。早知道去年就把六级过了,这一年英语已经返祖了,那天背单词连language都没反应过来。。。

相关推荐

  1. 排序算法-排序

    2023-12-17 12:22:01       38 阅读
  2. [排序算法]排序

    2023-12-17 12:22:01       118 阅读
  3. 算法排序

    2023-12-17 12:22:01       40 阅读
  4. 排序算法(HeapSort)

    2023-12-17 12:22:01       33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-17 12:22:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-17 12:22:01       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-17 12:22:01       82 阅读
  4. Python语言-面向对象

    2023-12-17 12:22:01       91 阅读

热门阅读

  1. C#编程语言简介

    2023-12-17 12:22:01       66 阅读
  2. 实验六 排序相关典型算法实现

    2023-12-17 12:22:01       37 阅读
  3. 在vue项目中webSocket封装(传token)

    2023-12-17 12:22:01       58 阅读
  4. 分发饼干(贪心算法)

    2023-12-17 12:22:01       61 阅读
  5. 谣言检测常用评价指标

    2023-12-17 12:22:01       66 阅读
  6. 用go封装一下封禁功能

    2023-12-17 12:22:01       55 阅读
  7. MySQL数据库存储

    2023-12-17 12:22:01       58 阅读
  8. pytorch之导出ONNX相关问题

    2023-12-17 12:22:01       60 阅读
  9. 如何在PHP中使用PDO预处理语句?

    2023-12-17 12:22:01       59 阅读
  10. fastadmin 导出

    2023-12-17 12:22:01       60 阅读