`
zendj
  • 浏览: 122006 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

C#排序算法汇集

阅读更多
  1. AbstractSort
    usingSystem;

    namespaceCore
    ...{
    internalabstractclassAbstractSort
    ...{
    protectedint[]list;

    publiceventSortingDelegateGreenDataChangedEvent;
    publiceventSortingDelegateRedDataChangedEvent;
    publiceventSortingDelegateDataChangedEvent;

    protectedboolstop=false;

    publicboolStop
    ...{
    get...{returnstop;}
    set...{stop=value;}
    }


    publicabstractvoidSort(int[]list);

    protectedvoidGreenDataChanged(intnewIndex)
    ...{
    if(this.GreenDataChangedEvent!=null)
    GreenDataChangedEvent(newIndex);
    }


    protectedvoidRedDataChanged(intnewIndex)
    ...{
    if(this.RedDataChangedEvent!=null)
    RedDataChangedEvent(newIndex);
    }


    protectedvoidDataChanged(intnewIndex)
    ...{
    if(this.DataChangedEvent!=null)
    DataChangedEvent(newIndex);
    }


    protectedvoidswap(intpos1,intpos2)
    ...{
    inttemp=list[pos1];
    list[pos1]
    =list[pos2];
    list[pos2]
    =temp;

    DataChanged(pos1);
    DataChanged(pos2);
    }


    protectedvoidFinished()
    ...{
    GreenDataChanged(
    -1);
    RedDataChanged(
    -1);
    }

    }

    }

  2. BubbleSort2
    usingSystem;

    namespaceCore
    ...{
    internalclassBubbleSort2:AbstractSort
    ...{
    publicoverridevoidSort(int[]list)
    ...{
    this.list=list;

    for(inti=0;i<list.Length-1;i++)
    for(intj=list.Length-1;j>i;j--)
    ...{
    if(stop)
    return;

    if(list[i]>list[j])
    ...{
    GreenDataChanged(i);
    RedDataChanged(j);
    swap(i,j);
    }

    }


    Finished();
    }

    }

    }


    /**//********************************************
    *注意!
    *
    *在使用循环嵌套时,内层循环一定是递减顺序,
    *如果写反,将导致排序效率降低。
    *
    *用户可尝试将上面代码中的循环嵌套改为:
    *
    *for(inti=0;i<list.Length-1;i++)
    *for(intj=i;j<list.Length;j++)
    *{
    *......
    *}
    *
    *观察排序性能收到的影响。
    *
    ******************************************
    */
  3. BubbleSort
    usingSystem;

    namespaceCore
    ...{
    internalclassBubbleSort:AbstractSort
    ...{
    publicoverridevoidSort(int[]list)
    ...{
    this.list=list;

    boolchange=true;
    for(inti=list.Length-1;i>0&&change;--i)
    ...{
    change
    =false;
    for(intj=0;j<i;++j)
    ...{
    if(stop)
    return;

    if(list[j]>list[j+1])
    ...{
    GreenDataChanged(j);
    RedDataChanged(j
    +1);
    swap(j,j
    +1);
    change
    =true;
    }

    }

    }


    Finished();
    }

    }

    }

  4. HeapSort
    usingSystem;

    namespaceCore
    ...{
    internalclassHeapSort:AbstractSort
    ...{
    publicoverridevoidSort(int[]list)
    ...{
    this.list=list;
    intlastOutOfOrder;

    buildHeap();

    for(lastOutOfOrder=list.Length-1;lastOutOfOrder>=0;
    lastOutOfOrder
    --)
    ...{
    if(stop)
    return;

    swap(
    0,lastOutOfOrder);
    heapify(
    0,lastOutOfOrder-1);
    }


    Finished();
    }


    privatevoidbuildHeap()
    ...{
    intindex;

    for(index=list.Length/2-1;index>=0;index--)
    ...{
    if(stop)
    return;

    heapify(index,list.Length
    -1);
    }

    }


    privatevoidheapify(intlow,inthigh)
    ...{
    intlargeIndex;

    inttemp=list[low];//copytherootnodeofthesubtree

    largeIndex
    =2*low+1;//indexoftheleftchild

    while(largeIndex<=high)
    ...{
    if(stop)
    return;

    if(largeIndex<high)
    if(list[largeIndex]<list[largeIndex+1])
    largeIndex
    =largeIndex+1;//indexofthe
    //largestchild

    if(temp>list[largeIndex])//subtreeis
    //alreadyinaheap
    break;
    else
    ...{
    list[low]
    =list[largeIndex];//movethelargerchild
    GreenDataChanged(low);

    //totheroot
    low=largeIndex;//gotothesubtreeto
    //restoretheheap
    largeIndex=2*low+1;
    }

    }


    list[low]
    =temp;//inserttempintothetree,thatis,list
    RedDataChanged(low);
    }

    }

    }

  5. InsertionSort
    usingSystem;

    namespaceCore
    ...{
    internalclassInsertionSort:AbstractSort
    ...{
    publicoverridevoidSort(int[]list)
    ...{
    this.list=list;

    intunsortedIndex,location;
    inttemp;

    for(unsortedIndex=1;unsortedIndex<list.Length;unsortedIndex++)
    border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-le
    分享到:
    评论

    相关推荐

      C#排序算法(C#)

      在编程领域,排序算法是数据结构与算法中的基础部分,对于C#开发者来说,掌握不同的排序算法至关重要。本文将深入探讨C#语言中常见的几种排序算法,包括它们的工作原理、性能特点以及如何在C#代码中实现。 1. **...

      C#排序算法详解.rar

      本资料“C#排序算法详解”聚焦于如何在C#中实现各种排序算法,帮助学习者深入理解并提升编程技能。 1. **冒泡排序**:冒泡排序是一种简单的排序算法,通过重复遍历数组,比较相邻元素并交换位置来完成排序。C#实现...

      c#排序算法 经典c#排序算法 经典

      c#排序算法 经典c#排序算法 经典c#排序算法 经典c#排序算法 经典c#排序算法 经典c#排序算法 经典c#排序算法 经典c#排序算法 经典c#排序算法 经典c#排序算法 经典c#排序算法 经典c#排序算法 经典

      c#排序算法的动态演示系统

      《C#排序算法的动态演示系统深度解析》 在编程领域,排序算法是不可或缺的基础,尤其是在C#这样的高级编程语言中。本系统专注于C#排序算法的动态演示,旨在通过直观的方式帮助开发者理解和掌握各种排序算法的工作...

      C#排序算法总结

      C#排序算法总结涵盖了交换排序和插入排序两大类排序算法,其中交换排序包括了冒泡排序、选择排序和快速排序,而插入排序则涉及直接插入排序和折半插入排序。下面将详细介绍每种排序算法的实现原理、特点以及在C#中的...

      C#常用排序算法

      以下是四种常见的C#排序算法:冒泡排序、选择排序、插入排序和希尔排序的详细解释。 1. **冒泡排序**: 冒泡排序是一种简单的交换排序,通过重复遍历数组,比较相邻元素并根据需要交换它们的位置来完成排序。每一...

      C#排序算法大全

      在编程领域,排序算法是数据结构与算法课程中的核心部分,尤其在C#这样的面向对象编程语言中,理解和掌握各种排序算法对提升程序性能至关重要。本文将深入探讨C#中的几种常见排序算法,包括它们的基本原理、实现方式...

      快速排序算法(c#实现)

      总的来说,快速排序是一种非常重要的排序算法,理解其工作原理并能用C#或其他编程语言实现,对于提升编程技能和解决问题的能力大有裨益。在实际项目中,根据具体场景选择合适的排序算法是优化程序性能的关键。

      C#排序算法的动态演示过程

      本话题主要涉及五种经典的排序算法,它们在C#语言环境下的动态演示过程:简单选择排序、改进冒泡排序、直接插入排序、希尔排序以及堆排序。这些算法在处理大量数据时的效率和性能差异,可以通过动态演示得到直观的...

      C#实现所有经典排序算法

      C#实现所有经典排序算法 本文将对C#实现的所有经典排序算法进行详细的讲解和分析,从选择排序、冒泡排序、快速排序等开始,讲解每种排序算法的原理、优缺点、实现代码和时间复杂度等方面。 一、选择排序 选择排序...

      c# 实现各种排序算法

      该代码是本人为写数据结构与算法--》排序所实现的代码。 代码使用c#实现,所有代码都已测试可用。

      C#简单的排序算法可视化程序

      总的来说,这个C#排序算法可视化程序是一个很好的学习工具,可以帮助开发者和学生更好地理解和掌握排序算法的工作原理。通过解决运行卡死的问题,这个程序将能够提供更加优质的教学体验。同时,这也提醒我们在开发...

      c# 排序算法大全 经典算法

      本篇将深入探讨C#中的排序算法,以及如何在Visual Studio 2005(VS05)环境下编写和应用这些算法。 1. **基础排序算法** - **冒泡排序**:最简单的排序算法之一,通过重复遍历数组比较并交换相邻元素来实现排序。...

      C#四种排序算法(冒泡排序)

      在C#编程中,排序算法是数据处理和分析的基础,常见的有冒泡排序、插入排序、选择排序和希尔排序。这四种排序算法各有特点,适用不同的场景。 1. **冒泡排序**: 冒泡排序是一种简单的排序算法,通过不断交换相邻...

      C#选择排序法排序

      在C#中,实现排序算法可以极大地提升程序的效率和用户体验。本项目聚焦于选择排序法,这是一种简单直观的排序算法,适用于小规模数据集或教学目的。 选择排序的工作原理如下: 1. **基本概念**:选择排序是一种不...

      C# 排序算法大全参考资料,比较清淅的一个版本。集中介绍了C#中的冒泡算法、选择排序、插入排序、希尔排序等常用算法,并包含示例代码和注意事项等。

      在编程领域,排序算法是数据处理的核心部分,尤其是在C#这样的高级编程语言中。本文将深入探讨C#中常见的四种排序算法:冒泡排序、选择排序、插入排序和希尔排序,以及它们的实现细节和应用场合。 首先,我们来看**...

      排序算法C#源码

      在这个"排序算法C#源码"的压缩包中,你可能会找到多种经典的排序算法实现,例如冒泡排序、插入排序、选择排序、快速排序、归并排序、堆排序等。 1. **冒泡排序**:这是一种简单的排序算法,通过不断交换相邻的不...

      冒泡排序法C#实现

      冒泡排序法C#实现冒泡排序法C#实现冒泡排序法C#实现冒泡排序法C#实现冒泡排序法C#实现冒泡排序法C#实现冒泡排序法C#实现冒泡排序法C#实现冒泡排序法C#实现冒泡排序法C#实现冒泡排序法C#实现冒泡排序法C#实现冒泡排序...

      C#排序算法_C#_

      在编程领域,排序算法是数据结构与算法学习中的重要组成部分,尤其在C#这样的面向对象编程语言中,理解和掌握各种排序算法对提升程序...同时,阅读提供的"C#排序算法.pdf"文档将有助于深入理解这些算法的细节和实现。

      用C#实现的排序算法

      根据提供的文件信息,我们可以深入探讨在C#中实现的不同类型的排序算法。这些排序算法包括选择排序、冒泡排序、快速排序、插入排序以及希尔排序。接下来将逐一介绍这些排序算法的具体实现及其工作原理。 ### 1. ...

Global site tag (gtag.js) - Google Analytics