返回

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

发布时间:2023-01-31 23:18:43 152
# 前端# php# python# 小程序# kotlin

开源地址

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 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 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 | 小程序 | 鸿蒙
公众号:蓝不蓝编程

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线