17种编程语言实现排序算法-堆排序

news2024/9/22 13:28:00

开源地址

https://gitee.com/lblbc/simple-works/tree/master/sort/

覆盖语言:C、C++、C#、Java、Kotlin、Dart、Go、JavaScript(JS)、TypeScript(TS)、ArkTS、swift、PHP。
覆盖平台:安卓(Java、Kotlin)、iOS(SwiftUI)、Flutter(Dart)、Window桌面(C#)、前端(微信小程序、uni-app、vue)、后端(Java、Kotlin、NodeJS、Python、PHP、Go、C、C++)、鸿蒙


image

1. 安卓Java版

开发工具:下载Android Studio

private void sort(int[] array) {
    for (int i = array.length / 2 - 1; i >= 0; i--) {
        adjustHeap(array, i, array.length);
    }
    for (int j = array.length - 1; j > 0; j--) {
        int temp = array[0];
        array[0] = array[j];
        array[j] = temp;
        adjustHeap(array, 0, j);
    }
}

private void adjustHeap(int[] array, int i, int length) {
    int tmp = array[i];
    for (int j = i * 2 + 1; j < length; j = j * 2 + 1) {
        if (j + 1 < length && array[j] < array[j + 1]) {
            j++;
        }
        if (array[j] > tmp) {
            array[i] = array[j];
            i = j;
        } else {
            break;
        }
    }
    array[i] = tmp;
}

image

2. 安卓Kotlin版

开发工具:下载Android Studio

private fun sort(array: IntArray) {
    for (i in array.size / 2 - 1 downTo 0) {
        adjustHeap(array, i, array.size)
    }
    for (j in array.size - 1 downTo 1) {
        val temp = array[0]
        array[0] = array[j]
        array[j] = temp
        adjustHeap(array, 0, j)
    }
}

private fun adjustHeap(array: IntArray, _index: Int, length: Int) {
    var index = _index
    val tmp = array[index]
    var j = index * 2 + 1
    while (j < length) {
        if (j + 1 < length && array[j] < array[j + 1]) {
            j++
        }
        if (array[j] > tmp) {
            array[index] = array[j]
            index = j
        } else {
            break
        }
        j = j * 2 + 1
    }
    array[index] = tmp
}

image

3. NodeJS

开发工具:下载Visual Studio Code

function sort() {
  let array = [2, 1, 5, 4, 3]
  for (var i = Math.floor(array.length / 2) - 1; i >= 0; i--) {
    adjustHeap(array, i, array.length)
  }
  for (var j = array.length - 1; j > 0; j--) {
    var temp = array[0]
    array[0] = array[j]
    array[j] = temp
    adjustHeap(array, 0, j)
  }
  return convertToStr(array)
}
function adjustHeap(array, i, length) {
  var tmp = array[i]
  for (var j = i * 2 + 1; j < length; j = j * 2 + 1) {
    if (j + 1 < length && array[j] < array[j + 1]) {
      j++
    }
    if (array[j] > tmp) {
      array[i] = array[j]
      i = j
    } else {
      break
    }
  }
  array[i] = tmp
}

image

4. Php

开发工具:下载Visual Studio Code

public function sort()
    {
        $array = [2, 1, 5, 4, 3];
        $len = count($array);
        for ($i = floor($len / 2) - 1; $i >= 0; $i--) {
            $this->adjustHeap($array, $i, $len);
        }
        for ($j = $len - 1; $j > 0; $j--) {
            $this->swap($array, 0, $j);
            $this->adjustHeap($array, 0, $j);
        }
        return var_dump($array);
    }

    private function adjustHeap(&$array, $i, $length)
    {
        $tmp = $array[$i];
        for ($k = 2 * $i + 1; $k < $length; $k = 2 * $k + 1) {
            if ($k + 1 < $length && $array[$k] < $array[$k + 1]) {
                $k++;
            }
            if ($tmp < $array[$k]) {
                $array[$i] = $array[$k];
                $i = $k;
            } else {
                break;
            }

        }
        $array[$i] = $tmp;
    }

image

5. Python

开发工具:下载PyCharm

array = [2, 1, 5, 4, 3]


def heap_sort(n, i):
    largest = i
    left = 2 * i + 1
    right = 2 * i + 2

    if left < n and array[i] < array[left]:
        largest = left

    if right < n and array[largest] < array[right]:
        largest = right

    if largest != i:
        array[i], array[largest] = array[largest], array[i]  # 交换

        heap_sort(n, largest)


def sort():
    n = len(array)

    for i in range(n, -1, -1):
        heap_sort(n, i)

    for i in range(n - 1, 0, -1):
        array[i], array[0] = array[0], array[i]
        heap_sort(i, 0)

image

6. Swift(SwiftUI版)

开发工具:XCode(mac电脑自带)

var array = [2, 1, 5, 4, 3]
func sort() {
    var i = array.count / 2 - 1
    
    while i >= 0
    {
        adjustHeap(_startIndex:i, length:array.count);
        i -= 1
    }
    
    i = array.count - 1
    while i > 0
    {
        let temp = array[0];
        array[0] = array[i];
        array[i] = temp;
        adjustHeap(_startIndex: 0, length:i);
        i -= 1
    }
}

func adjustHeap( _startIndex:Int,  length:Int) {
    var startIndex = _startIndex
    let tmp = array[startIndex];
    
    var j = startIndex * 2 + 1
    
    while j < length
    {
        if (j + 1 < length && array[j] < array[j + 1]) {
            j += 1;
        }
        if (array[j] > tmp) {
            array[startIndex] = array[j];
            startIndex = j;
        } else {
            break;
        }
        j = j * 2 + 1
    }
    
    array[startIndex] = tmp;
}

image

7. uni-app

开发工具:下载HBuilderX

sort() {
	let array = [2, 1, 5, 4, 3]
	for (var i = Math.floor(array.length / 2) - 1; i >= 0; i--) {
		this.adjustHeap(array, i, array.length)
	}
	for (var j = array.length - 1; j > 0; j--) {
		var temp = array[0]
		array[0] = array[j]
		array[j] = temp
		this.adjustHeap(array, 0, j)
	}
	this.array = array
	this.arrayStr = this.convertToStr(array)
},
adjustHeap(array: number[], i: number, length: number) {
	var tmp = array[i]
	for (var j = i * 2 + 1; j < length; j = j * 2 + 1) {
		if (j + 1 < length && array[j] < array[j + 1]) {
			j++
		}
		if (array[j] > tmp) {
			array[i] = array[j]
			i = j
		} else {
			break
		}
	}
	array[i] = tmp
}

image

8. vue

开发工具:下载Visual Studio Code

sort() {
  let array = [2, 1, 5, 4, 3]
  for (var i = Math.floor(array.length / 2) - 1; i >= 0; i--) {
    this.adjustHeap(array, i, array.length)
  }
  for (var j = array.length - 1; j > 0; j--) {
    var temp = array[0]
    array[0] = array[j]
    array[j] = temp
    this.adjustHeap(array, 0, j)
  }
  this.array = array
  this.arrayStr = this.convertToStr(array)
},
adjustHeap(array: number[], i: number, length: number) {
  var tmp = array[i]
  for (var j = i * 2 + 1; j < length; j = j * 2 + 1) {
    if (j + 1 < length && array[j] < array[j + 1]) {
      j++
    }
    if (array[j] > tmp) {
      array[i] = array[j]
      i = j
    } else {
      break
    }
  }
  array[i] = tmp
}

9. 微信小程序

开发工具:下载微信开发者工具

sort() {
    let array = [2, 1, 5, 4, 3]
    for (var i = Math.floor(array.length / 2) - 1; i >= 0; i--) {
      this.adjustHeap(array, i, array.length)
    }
    for (var j = array.length - 1; j > 0; j--) {
      var temp = array[0]
      array[0] = array[j]
      array[j] = temp
      this.adjustHeap(array, 0, j)
    }
    this.setData({
      array: array,
      arrayStr: this.convertToStr(array),
    })
  },
  adjustHeap(array: number[], i: number, length: number) {
    var tmp = array[i]
    for (var j = i * 2 + 1; j < length; j = j * 2 + 1) {
      if (j + 1 < length && array[j] < array[j + 1]) {
        j++
      }
      if (array[j] > tmp) {
        array[i] = array[j]
        i = j
      } else {
        break
      }
    }
    array[i] = tmp
  }

image

10. 鸿蒙(ArkTS)

开发工具:下载DevEco Studio

sort() {
    let array = [2, 1, 5, 4, 3]
    for (var i = Math.floor(array.length / 2) - 1; i >= 0; i--) {
      this.adjustHeap(array, i, array.length)
    }
    for (var j = array.length - 1; j > 0; j--) {
      var temp = array[0]
      array[0] = array[j]
      array[j] = temp
      this.adjustHeap(array, 0, j)
    }
    this.array = array
  }
  adjustHeap(array: number[], i: number, length: number) {
    var tmp = array[i]
    for (var j = i * 2 + 1; j < length; j = j * 2 + 1) {
      if (j + 1 < length && array[j] < array[j + 1]) {
        j++
      }
      if (array[j] > tmp) {
        array[i] = array[j]
        i = j
      } else {
        break
      }
    }
    array[i] = tmp
  }

image

11. Go语言

开发工具:下载Visual Studio Code

var array = []int{2, 1, 5, 4, 3}

func adjustHeap(currentIndex int, maxLength int) {
	var noLeafValue = array[currentIndex]
	for j := 2*currentIndex + 1; j <= maxLength; j = currentIndex*2 + 1 {
		if j < maxLength && array[j] < array[j+1] {
			j++
		}
		if noLeafValue >= array[j] {
			break
		}
		array[currentIndex] = array[j]
		currentIndex = j
	}
	array[currentIndex] = noLeafValue
}

func createHeap(length int) {
	for i := length / 2; i >= 0; i-- {
		adjustHeap(i, length-1)
	}
}

func sort(array []int) {
	var length = len(array)
	createHeap(length)
	for i := length - 1; i > 0; i-- {
		array[0], array[i] = array[i], array[0]
		adjustHeap(0, i-1)
	}
}

image

12. Java

开发工具:下载IntelliJ IDEA

 private static void sort(int[] array) {
        for (int i = array.length / 2 - 1; i >= 0; i--) {
            adjustHeap(array, i, array.length);
        }
        for (int j = array.length - 1; j > 0; j--) {
            int temp = array[0];
            array[0] = array[j];
            array[j] = temp;
            adjustHeap(array, 0, j);
        }
    }

    private static void adjustHeap(int[] array, int i, int length) {
        int tmp = array[i];
        for (int j = i * 2 + 1; j < length; j = j * 2 + 1) {
            if (j + 1 < length && array[j] < array[j + 1]) {
                j++;
            }
            if (array[j] > tmp) {
                array[i] = array[j];
                i = j;
            } else {
                break;
            }
        }
        array[i] = tmp;
    }

image

13. Kotlin

开发工具:下载IntelliJ IDEA

private fun sort(array: IntArray) {
    for (i in array.size / 2 - 1 downTo 0) {
        adjustHeap(array, i, array.size)
    }
    for (j in array.size - 1 downTo 1) {
        val temp = array[0]
        array[0] = array[j]
        array[j] = temp
        adjustHeap(array, 0, j)
    }
}

private fun adjustHeap(array: IntArray, _index: Int, length: Int) {
    var index = _index
    val tmp = array[index]
    var j = index * 2 + 1
    while (j < length) {
        if (j + 1 < length && array[j] < array[j + 1]) {
            j++
        }
        if (array[j] > tmp) {
            array[index] = array[j]
            index = j
        } else {
            break
        }
        j = j * 2 + 1
    }
    array[index] = tmp
}

image

14. Flutter

开发工具:下载IntelliJ IDEA


void sort(List<int> array) {
  var startIndex = (array.length / 2 - 1).toInt();
  for (int i = startIndex; i >= 0; i--) {
    adjustHeap(array, i, array.length);
  }
  for (int j = array.length - 1; j > 0; j--) {
    int temp = array[0];
    array[0] = array[j];
    array[j] = temp;
    adjustHeap(array, 0, j);
  }
}

void adjustHeap(List<int> array, int startIndex, int length) {
  int tmp = array[startIndex];
  for (int j = startIndex * 2 + 1; j < length; j = j * 2 + 1) {
    if (j + 1 < length && array[j] < array[j + 1]) {
      j++;
    }
    if (array[j] > tmp) {
      array[startIndex] = array[j];
      startIndex = j;
    } else {
      break;
    }
  }
  array[startIndex] = tmp;
}

15. C语言

开发工具:下载Visual Studio


void adjustHeap(int* array, int i, int length)
{
    int tmp = array[i];
    for (int j = i * 2 + 1; j < length; j = j * 2 + 1)
    {
        if (j + 1 < length && array[j] < array[j + 1])
        {
            j++;
        }
        if (array[j] > tmp)
        {
            array[i] = array[j];
            i = j;
        }
        else
        {
            break;
        }
    }
    array[i] = tmp;
}

 void sort(int* array, int count)
{
    for (int i = count / 2 - 1; i >= 0; i--)
    {
        adjustHeap(array, i, count);
    }
    for (int j = count - 1; j > 0; j--)
    {
        int temp = array[0];
        array[0] = array[j];
        array[j] = temp;
        adjustHeap(array, 0, j);
    }
}

image

16. C++

开发工具:下载Visual Studio


void adjustHeap(int* array, int i, int length)
{
    int tmp = array[i];
    for (int j = i * 2 + 1; j < length; j = j * 2 + 1)
    {
        if (j + 1 < length && array[j] < array[j + 1])
        {
            j++;
        }
        if (array[j] > tmp)
        {
            array[i] = array[j];
            i = j;
        }
        else
        {
            break;
        }
    }
    array[i] = tmp;
}

 void sort(int* array, int count)
{
    for (int i = count / 2 - 1; i >= 0; i--)
    {
        adjustHeap(array, i, count);
    }
    for (int j = count - 1; j > 0; j--)
    {
        int temp = array[0];
        array[0] = array[j];
        array[j] = temp;
        adjustHeap(array, 0, j);
    }
}

image

17. C#

开发工具:下载Visual Studio

 private static void Sort(int[] array)
        {
            for (int i = array.Length / 2 - 1; i >= 0; i--)
            {
                AdjustHeap(array, i, array.Length);
            }
            for (int j = array.Length - 1; j > 0; j--)
            {
                int temp = array[0];
                array[0] = array[j];
                array[j] = temp;
                AdjustHeap(array, 0, j);
            }
        }

        private static void AdjustHeap(int[] array, int i, int length)
        {
            int tmp = array[i];
            for (int j = i * 2 + 1; j < length; j = j * 2 + 1)
            {
                if (j + 1 < length && array[j] < array[j + 1])
                {
                    j++;
                }
                if (array[j] > tmp)
                {
                    array[i] = array[j];
                    i = j;
                }
                else
                {
                    break;
                }
            }
            array[i] = tmp;
        }

image

关于

厦门大学计算机专业|华为八年高级工程师
专注《零基础学编程系列》 http://lblbc.cn/blog
包含:Java | 安卓 | 前端 | Flutter | iOS | 小程序 | 鸿蒙
公众号:蓝不蓝编程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/177149.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Maplab 2.0发布:多传感器融合的SLAM框架,支持多机器人、语义回环检测功能

摘要 将多种传感器和深度学习集成到SLAM系统中是当前研究的重要领域。多模态是一块跳板&#xff0c;既可以在挑战场景下增强鲁棒性&#xff0c;又可以解决不同传感器配置的多机系统建图问题。Maplab 2.0提供了一个更加通用的开源平台&#xff0c;最初的Maplab用于创建和管理视…

5-3中央处理器-数据通路的功能和基本结构

文章目录一.功能二.基本结构三.数据流向&#xff08;一&#xff09;内部单总线方式1.寄存器之间的数据传送2.主存与CPU之间的数据传送3.执行算术或逻辑运算&#xff08;二&#xff09;专用数据通路方式一.功能 数据在功能部件之间传送的路径称为数据通路。路径上的部件称为数据…

合宙ESP32C3上手使用

概述经典款是有ch343 ttl 转usb 需要安装驱动 GPIO20/21新款使用usb 直连不需要驱动 USB GPIO18/19ESP32C3 是ESP-RISC-V CPU 是基于 RISC-V ISA 的 32 位内核&#xff0c;包括基本整数 (I)&#xff0c;乘法/除法 (M) 和压缩 (C) 标准扩展。ESP-RISC-V CPU 内核具有 4 级有序标…

【蓝桥杯】简单数论1——GCDLCM

GCD 最大公约数Greatest Common Divisor(GCD)&#xff1a;整数a和b的GCD是指能同时整除a和b的最大整数&#xff0c;记为gcd(a,b)。由于-a的因子和a的因子相同&#xff0c;因此gcd(a, b) gcd(al, |bl)。编码时只关注正整数的最大公约数。 GCD性质 (1) gcd(a, b) gcd(a, ab) …

一、python准备工作篇(黑马程序猿-python学习记录)

黑马程序猿的python学习视频&#xff1a;https://www.bilibili.com/video/BV1qW4y1a7fU/ 目录 1. python官网 2. 检查是否安装完毕 3. pycharm官网 5. phcharm更换主题 6. 新建第一个python文件 7. pycharm字体大小设置 8. 设置快捷键 设置字体大小 ​​​​​​​9. 安装中文…

Python机器学习:假设检验

方差分析这部分内容还不是很理解&#xff0c;在这里先做一个笔记&#xff0c;以后有时间再回过头来改一改。 用到的数据集→\rightarrow→Iris 什么是假设检验&#xff1f; 假设检验就是利用样本数据对某个事先做出的统计假设&#xff0c;再按照某种方法去检验&#xff0c;最后…

CSS样式基础内容2

目录 Emmet语法 快速格式化代码 CSS的复合选择器 后代选择器 子选择器 并集选择器 伪类选择器 链接伪类选择器 focus伪类选择器 CSS元素显示模式 块元素 行内元素 行内块元素 元素显示模式转换 案例-简洁版侧边栏 单行文字垂直居中 CSS的背景 背景图片 方位名词…

【蓝桥云课】最大公约数与最小公倍数

一、最大公约数gcd(a,b) 引例&#xff1a; a24&#xff0c;其因子有1、2、3、4、6、8、12、24 b15&#xff0c;其因子有1、3、5、15 最大公约数gcd(a,b)gcd(24,15)3 欧几里得辗转算法&#xff1a; a max(a,b); b min(a,b); while(b>0){t a%b;a b;b t; }运算过程&…

postgresql源码学习(53)—— vacuum②-lazy vacuum之heap_vacuum_rel函数

一、 table_relation_vacuum函数 1. 函数定义 前篇最后&#xff08;https://blog.csdn.net/Hehuyi_In/article/details/128749517&#xff09;&#xff0c;我们提到了table_relation_vacuum函数&#xff08;tableam.h文件&#xff09;&#xff0c;本篇继续学习。 如前面所说&a…

人大金仓数据库对象访问权限

数据库的表、索引、视图等&#xff0c;在数据库中的一切都可以称为数据库对象。 对象分为以下两类 模式&#xff08;SCHEMA&#xff09;对象&#xff1a;可视为一个表的集合&#xff0c;可以理解为一个存储目录&#xff0c;包含视图、索引、数据类型、函数和操作符等。非模式…

AcWing1229.日期问题——学习笔记

目录 题目 代码 AC结果 思路&#xff1a; 一、获取数据 二、验证日期合法性 三、去重 四、排序 五、主方法中调用&输出 题目 1229. 日期问题 - AcWing题库https://www.acwing.com/problem/content/description/1231/ 代码 import java.util.Scanner;public class…

XILINX FPGA OV5640 摄像头驱动(一)

影像行业是一个值得深耕的方向&#xff0c;废话不多说 先看输入和输出 输入是光照&#xff0c;输出是光照的数字信号 image area&#xff1a;说的是感光矩阵&#xff0c;CMOS图像传感器的最核心部分&#xff0c;接收光照产生电信号的部分。决定了图像质量的好坏 矩阵就会行列…

MyBatisPlus笔记

一、MyBatisPlus概述 MyBatisPlus&#xff08;简称 MP&#xff09;是一个MyBatis的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。 MyBatis-Plus可以节省我们大量工作时间&#xff0c;所有的CRUD代码它都可以自动化完成&…

leetcode1143 最长公共子序列

题目 给定两个字符串 text1 和 text2&#xff0c;返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 &#xff0c;返回 0 。 一个字符串的 子序列 是指这样一个新的字符串&#xff1a;它是由原字符串在不改变字符的相对顺序的情况下删除某些字符&#xff08;…

因果诊断原理

因果分析在近十来年逐渐倍受关注&#xff0c;其提供了解释因子间因果性的定量分析工具&#xff0c;广泛用于数据分析领域&#xff0c;同时也就用决策分析、作用预估等反事实因果推理中。本文首先对比了因果性和相关性的关系&#xff0c;之后确定因果关系的基本方法&#xff0c;…

博客搭建教程1-Archlinux环境配置

文章目录1 前言2 archlinux镜像下载3 archlinux安装1 前言 这个教程主要讲解linux环境下博客的搭建&#xff0c;这里的linux系统选择archlinux&#xff0c;博客的框架基于hexo框架。 参考博客&#xff1a; 1、ArchLinux安装教程 2、Archlinux2022年7月镜像 手把手安装教程 UE…

MySQL进阶——存储过程

MySQL 存储过程 1、简介 大多数 SQL 语句都是针对一个或多个表的单条语句。并非所有的操作都那么简单。经常会有一个完整的操作需要多条语句才能完成。 存储过程简单来说&#xff0c;就是为以后的使用而保存的一条或多条 MySQL 语句的集合。可将其视为批处理文件。虽然他们的…

【Spring(八)】带你打通Spring的注解开发

文章目录注解开发注解开发定义bean纯注解开发注解开发bean作用范围与生命周期管理注解开发依赖注入注解开发管理第三方bean注解开发实现为第三方bean注入资源总结注解开发 Spring的配置我们已经告一段落了&#xff0c;那接下来我们就要发挥Spring的强项了&#xff1a;简化开发&…

MySQL —— 数据库基础

目录 一、数据库的基本概念 1. 什么是数据库 2. 主流的数据库 二、基本使用 1. 连接服务器 2. 服务器管理 3. 服务器、数据库、表关系 4. 使用案例 5. 数据库的存储逻辑 三、MySQL架构 四、SQL分类 五、存储引擎 1. 存储引擎 2. 查看存储引擎 3. 存储引擎对比 …

Elasticsearch 这篇还不够吗

系列文章目录 文章目录系列文章目录一、概述1. ES 的基本概念2. ES 和关系型数据库的对比二、环境准备1. linux 下单机安装三、入门操作1. 创建索引2. 写入文档3. 根据id搜索文档4. 根据一般字段搜索文档5. 根据文本字段搜索文档四、ES 客户端实战1. Spring Data Elasticsearch…