• Top Posts

    C# program to Generic Heap sort


     using System;  
     using System.Collections.Generic;  
     using System.Linq;  
     using System.Text;  
     using System.Threading.Tasks;  
     using System.Security;  
     using System.Runtime.Versioning;  
     using System.Runtime.CompilerServices;  
     namespace sorting  
     {  
       class Sorting7  
       {  
         private static void Heapsort(T[] keys, int lo, int hi, IComparer<T> comparer)  
         {/*from w w w .j a v a 2s . c om*/  
           int n = hi - lo + 1;  
           for (int i = n / 2; i >= 1; --i)  
             ArraySortHelper<T>.DownHeap(keys, i, n, lo, comparer);  
           for (int index = n; index > 1; --index)  
           {  
             T[] a = keys;  
             int i = lo;  
             int num = index;  
             int j = i + num - 1;  
             Swap(a, i, j);  
             DownHeap(keys, 1, index - 1, lo, comparer);  
           }  
         }  
         private static void Swap(T[] a, int i, int j)  
         {  
           if (i == j)  
             return;  
           T obj = a[i];  
           a[i] = a[j];  
           a[j] = obj;  
         }  
         private static void DownHeap(T[] keys, int i, int n, int lo, IComparer<T> comparer)  
         {  
           T x = keys[lo + i - 1];  
           int num;  
           for (; i <= n / 2; i = num)  
           {  
             num = 2 * i;  
             if (num < n && comparer.Compare(keys[lo + num - 1], keys[lo + num]) < 0)  
               ++num;  
             if (comparer.Compare(x, keys[lo + num - 1]) < 0)  
               keys[lo + i - 1] = keys[lo + num - 1];  
             else  
               break;  
           }  
           keys[lo + i - 1] = x;  
         }  
       }  
     }  
    

    No comments

    Post Top Ad

    ad728

    Post Bottom Ad

    ad728