c堆排序
#include<stdio.h>
#include<stdlib.h>
/* p是循环输出的下表*/
int p=;
/*堆调整算法*/
/* r[]数组 , 根结点的编号为k,最后一个结点的编号为m */
void Sift(int r[ ], int k, int m)
{
int i, j, temp;
p++;i = k; j = * i; /* p是循环输出的下表 i是被筛选结点,j是结点i的左孩子*/
while (j <= m) /*筛选还没有进行到叶子*/
{
if (j < m- && r[j] < r[j+]) j++; /*比较i的左右孩子,j指向较大者*/
if (r[i] > r[j]) break; /*根结点大于左右孩子中的较大者*/
else {
temp = r[i]; r[i] = r[j]; r[j] = temp; /*将根结点与结点j交换*/
i = j; j = * i; /*被筛结点位于原来结点j的位置*/
}
}
/*输出每一次 调整的代码*/
printf("NO.%d line:\t", p);
for(i = ; i< ;i++)
{
printf("%3d",r[i]);
}
printf("\n----------------------------------\n");
}
/*堆排序算法*/
void HeapSort(int r[ ], int n) /* r[0]为交换的临时单元*/
{
int i;
/*初始建堆,从最后一个分支结点至根结点*/
for (i = n/; i >= ; i--)
Sift(r, i, n) ;
for (i = ; i < n; i++)
{
r[] = r[]; r[] = r[n-i+]; r[n-i+] = r[]; /*交换r[1]和r[n-i+1]*/
Sift(r, , n-i); /*对r[1]~r[n-i]重建堆*/
}
}
/*主函数*/
int main()
{
int i=;
int r[]={,,,,,,};
/* 排序前的数 */
printf("Heap sort before:");
for(i = ; i< ; i++)
printf("%3d", r[i]);
/* 输出排序后的数 */
printf("\n heap sort after:\n");
HeapSort(r, ); system("color 4E");
system("pause");
return ;
}
c插入排序
#include<stdio.h>
#include<stdlib.h> void InsertSort(int r[ ], int n) /*r[0]用作暂存单元和监视哨*/
{
int i, j;
for (i = ; i <= n; i++)
{
r[] = r[i]; /*暂存待插记录,设置哨兵*/
for (j = i - ; r[] < r[j]; j--) /*寻找插入位置*/
r[j + ] = r[j];
r[j + ] = r[];
}
}
int main()
{
int i;
int r[]={,,,,,,,};
printf("排序之前的元素是");
for(i = ; i< ; i++)
printf("%3d", r[i]);
printf("\n排序后的元素是:");
InsertSort(r, );
for(i = ; i< ;i++)
printf("%3d", r[i]);
return ;
}
c堆排序的更多相关文章
- 算法与数据结构(十四) 堆排序 (Swift 3.0版)
上篇博客主要讲了冒泡排序.插入排序.希尔排序以及选择排序.本篇博客就来讲一下堆排序(Heap Sort).看到堆排序这个名字我们就应该知道这种排序方式的特点,就是利用堆来讲我们的序列进行排序.&quo ...
- [数据结构]——堆(Heap)、堆排序和TopK
堆(heap),是一种特殊的数据结构.之所以特殊,因为堆的形象化是一个棵完全二叉树,并且满足任意节点始终不大于(或者不小于)左右子节点(有别于二叉搜索树Binary Search Tree).其中,前 ...
- 堆排序与优先队列——算法导论(7)
1. 预备知识 (1) 基本概念 如图,(二叉)堆是一个数组,它可以被看成一个近似的完全二叉树.树中的每一个结点对应数组中的一个元素.除了最底层外,该树是完全充满的,而且从左向右填充.堆的数组 ...
- 数据结构:堆排序 (python版) 小顶堆实现从大到小排序 | 大顶堆实现从小到大排序
#!/usr/bin/env python # -*- coding:utf-8 -*- ''' Author: Minion-Xu 小堆序实现从大到小排序,大堆序实现从小到大排序 重点的地方:小堆序 ...
- 堆排序(python实现)
堆排序是利用最大最或最小堆,废话不多说: 先给出几个概念: 二叉树:二叉树是每个节点最多有两个子树的树结构.通常子树被称作“左子树”(left subtree)和“右子树” 完全二叉树:除最后一层外, ...
- 堆排序分析及php实现
堆排序:是一种特殊形式的选择排序,他是简单选择排序的一种改进. 什么是堆? 具有n个元素的序列:{k1,k2,ki,…,kn} (ki <= k2i,ki <= k2i+1) 或者 (ki ...
- 浅谈C++之冒泡排序、希尔排序、快速排序、插入排序、堆排序、基数排序性能对比分析之后续补充说明(有图有真相)
如果你觉得我的有些话有点唐突,你不理解可以想看看前一篇<C++之冒泡排序.希尔排序.快速排序.插入排序.堆排序.基数排序性能对比分析>. 这几天闲着没事就写了一篇<C++之冒泡排序. ...
- [Unity][Heap sort]用Unity动态演示堆排序的过程(How Heap Sort Works)
[Unity][Heap sort]用Unity动态演示堆排序的过程 How Heap Sort Works 最近做了一个用Unity3D动态演示堆排序过程的程序. I've made this ap ...
- PHP实现堆排序
经验 工作了,面试我工作这家公司时被技术面打击得不行,因为自己的数据结构等基础学得实在太差,虽然原来是想做设计师的说...不过看在PHP写得还凑合的份上能来实习了,但还是决心恶补一下基础. 其实自己之 ...
- 堆排序 Heapsort
Prime + Heap 简直神了 时间优化好多,顺便就把Heapsort给撸了一发 具体看图 Heapsort利用完全二叉树+大(小)顶锥的结构每次将锥定元素和锥最末尾的元素交换 同时大(小)顶锥元 ...
随机推荐
- .NET Core 3.1 编写混合 C++ 程序
前言 随着 .NET Core 3.1 的第二个预览版本发布,微软正式将 C++/CLI 移植到 .NET Core 上,从此可以使用 C++ 编写 .NET Core 的程序了. 由于目前仅有 MS ...
- 『题解』洛谷P1993 小K的农场
更好的阅读体验 Portal Portal1: Luogu Description 小\(K\)在\(\mathrm MC\)里面建立很多很多的农场,总共\(n\)个,以至于他自己都忘记了每个农场中种 ...
- go语言教程之浅谈数组和切片的异同
Hello ,各位小伙伴大家好,我是小栈君,上次分享我们讲到了Go语言关于项目工程结构的管理,本期的分享我们来讲解一下关于go语言的数组和切片的概念.用法和区别. 在go语言的程序开发过程中,我们避免 ...
- 易初大数据 2019年11月8日 linux 王庆超
◆linux系统的特点: (1)完全免费. (2)高效.安全.稳定. (3)支持多种硬件平台. (4)友好的用户界面. (5)强大的网络功能. (6)支持多任务.多用户. ◆linux体系: 1.li ...
- php debug_backtrace方法跟踪代码调用
php debug_backtrace方法跟踪代码调用<pre>function string 当前的函数名,参见: __FUNCTION__.line integer 当前的行号.参见: ...
- day1-python初识以及变量
一.变量:将输入的内容赋值给变量,即变量=输入的内容 n1=input('请输入用户名:') 二. 变量名可以是 -英文. -数字.数字不能开头 -下划线,但是不可以下划线开头 不能是关键字 'and ...
- mysql里面的时间获取(格式年月日)
1.当前日期 select DATE_SUB(curdate(),INTERVAL 0 DAY) ; 2.明天日期 select DATE_SUB(curdate(),INTERVAL -1 DAY) ...
- nyoj 86-找球号(一)二分法
86-找球号(一) 内存限制:64MB 时间限制:3000ms 特判: No 通过数:14 提交数:48 难度:3 题目描述: 在某一国度里流行着一种游戏.游戏规则为:在一堆球中,每个球上都有一个整数 ...
- useReducer代替Redux
创建state.js import React, { createContext,useContext,useReducer } from 'react'; export const countTex ...
- Java虚拟机详解(九)------类文件结构
我们知道计算机是由晶体管.电路板等组装而成的电子设备,而这些电子设备其实只能识别0与1的信号. 那么问题来了,我们在操作系统上编写的Java代码(由字母.数字等各种符号组成),打包后部署到服务器上,是 ...