zoukankan      html  css  js  c++  java
  • 堆排序算法的实现 (冒泡排序)

    方法一:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace ConsoleApplication3
    {
        class Program
        {
            static void Main(string[] args)
            {
                List<int> seqlist = new List<int> { 42, 20,17, 27,13,8,17,48};
                HeadOrder(seqlist, 0, seqlist.Count - 1);
    
            }
    
            public void BubbleSort(List<int> sqList)
            {
               
            }
    
    
            public static void CreadHeap(List<int> seqList, int low, int high)
            {            
                int k;
                int j=0;
                int temp = 0;
    
                for (int i = high / 2; i >= low; i--)
                {
                    k = i;
                    temp = seqList[i];
    
                    j = 2 * k + 1;               
    
                    while (j <= high)
                    {                  
                        if (j < high 
                            && j + 1 <= high 
                            && seqList[j] < seqList[j + 1])
                        {
                            j++;
                        }
    
                        if (temp < seqList[j])
                        {
                            seqList[k] = seqList[j];                                          
    
                            k = j;
                            j = 2 * k + 1;
                        }
                        else
                        {
                            j = high + 1;
                        }
                    }
    
                    seqList[k] = temp;
                }
    
            }
    
    
            public static void HeadOrder(List<int> seqlist, int low, int high)
            {
                if (high <= low)
                {
                    return;
                }
               
                int temp = 0;
    
                CreadHeap(seqlist, 0, high);
    
                for (int i = seqlist.Count - 1; i > low; i--)
                {
    
                    temp = seqlist[0];
    
                    seqlist[0] = seqlist[i];
    
                    seqlist[i] = temp;
    
                    CreadHeap(seqlist, 0, i-1);               
                }
            }
    
        }
    }
    

     方法二:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace ConsoleApplication3
    {
        class Program
        {
            static void Main(string[] args)
            {
                List<int> seqlist = new List<int> { 42, 20,17, 27,13,8,17,48};
    
                HeadOrder(seqlist, 0, seqlist.Count - 1);
            }
    
            public void BubbleSort(List<int> sqList)
            {
                int tmp = 0;
    
                for (int i = 0; i < sqList.Count -1; ++i)
                {
                    for (int j = i +1; j<sqList.Count; j++)
                    {
                        if (sqList[i] < sqList[j])
                        {
                            tmp = sqList[i];
                            sqList[i] = sqList[j];
                            sqList[j] = tmp;
                        }
                    }
                }
            }
    
    
            public static void CreadHeap(List<int> seqList, int low, int high)
            {
                int k;
                int j = 0;
                int temp = 0;
    
                for (int i = high / 2; i >= low; i--)
                {
                    k = i;
                    j = 2 * k + 1;
    
                    while (j <= high)
                    {
                        temp = seqList[k];
    
                        if (j < high
                            && j + 1 <= high
                            && seqList[j] < seqList[j + 1])
                        {
                            j++;
                        }
    
                        if (temp < seqList[j])
                        {
                            seqList[k] = seqList[j];
                            seqList[j] = temp;
    
                            k = j;
                            j = 2 * k + 1;
                        }
                        else
                        {
                            j = high + 1;
                        }
    
                    }
                }
            }
    
    
            public static void HeadOrder(List<int> seqlist, int low, int high)
            {
                if (high <= low)
                {
                    return;
                }
    
                int i = low;
                int temp = 0;
    
                CreadHeap(seqlist, 0, high);
    
                temp = seqlist[0];
    
                seqlist[0] = seqlist[high];
    
                seqlist[high] = temp;
    
                HeadOrder(seqlist, i, high - 1);
            }
    
        }
    }
  • 相关阅读:
    .net中实现运行时从字符串动态创建对象
    C# 用 VB.net 函數庫 實現全角與半角轉換
    實現.net 加載插件方式
    VS2008下載
    Lotus Notes Send EMail from VB or VBA
    用C#写vs插件中的一些Tip
    SQL2005中异常处理消息框可直接使用
    C#路径/文件/目录/I/O常见操作汇总
    利用.net反射动态调用指定程序集的中的方法
    说说今年的计划
  • 原文地址:https://www.cnblogs.com/Jessy/p/3469246.html
Copyright © 2011-2022 走看看