Сортировка кучей (Heap Sort) (Реализация на C#)

C#   9 июля 2012  Автор статьи:  

Сортировка кучей (Heap Sort) или пирамидальная сортировка — достаточно эффективный алгоритм сортировки данных. В данном примере пользователь задает массив из n элементов, который сортируется методом Heap Sort.
Реализация данного алгоритма на C#:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Sort
{
class Program
{
public static void heapify (int[] arr, int pos, int n)
{
int temp;
while (2 * pos + 1 < n) { int t = 2 * pos +1; if (2 * pos + 2 < n && arr[2 * pos + 2] >= arr[t])
{
t = 2 * pos + 2;
}
if (arr[pos] < arr[t]) { temp = arr[pos]; arr[pos] = arr[t]; arr[t] = temp; pos = t; } else break; } } public static void heap_make(int [] arr, int n) { for (int i = n - 1; i >= 0; i--)
{
heapify(arr, i, n);
}
}
public static void heap_sort(int[] arr, int n)
{
int temp;
heap_make(arr, n);
while(n>0)
{
temp = arr[0];
arr[0] = arr[n-1];
arr[n-1] = temp;
n--;
heapify(arr, 0, n);
}
}
static void Main()
{
const int nmax = 50001;
int[] arr = new int [nmax+1];
Console.WriteLine("Enter value n: ");
int n;
n = int.Parse(Console.ReadLine());
string str = Console.ReadLine();
string[] mas = str.Split(' ');
for (int i = 0; i < n; i ++) { arr[i] = int.Parse(mas[i]); } heap_sort(arr, n); for (int i = 0; i < n; i ++) { Console.Write(arr[i]); Console.Write(' '); } } } }

Научиться программировать

  • на Delphi

  • на Java

  • на C++