C#常用排序算法

原创 2007年09月12日 10:40:00

太久没用过这些算法了,都忘得差不多了。 用C#的语法复习下。

 

冒泡排序

简单的说就是任意两个气泡,轻的往上飘,

两两比较待排序数据的元素大小,发现两个元素次序相反时交换,直到没有反序的元素为止。

        /// <summary>

        /// 冒泡排序

        /// </summary>

        /// <param name="list">进行排序的整型数组</param>

        public static void BubbleSorter(int[] list)

        {

            int i, j, temp;

            bool done = false;//判断是否已经排序过

            j = 1;

            while ((j < list.Length) && (!done))

            {

                done = true;

                for (i = 0; i < list.Length - j;i++)

                {

                    if (list[i] > list[i + 1])

                    {

                        done = false;

                        //交换位置

                        temp = list[i];

                        list[i] = list[i + 1];

                        list[i + 1] = temp;

                    }

                }

                j++;

            }

        }

 

选者排序

每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。

 

        /// <summary>

        /// 选者最小值排序法

        /// </summary>

        /// <param name="list">进行排序的整型数组</param>

        public static void SelectMinSorter(int[] list)

        {

            int min, temp;

            for (int i = 0; i < list.Length; i++)

            {

                min = i;

                for (int j = i + 1; j < list.Length; j++)

                {

                    if (list[j] < list[min])

                        min = j;

                }

                temp = list[min];

                list[min] = list[i];

                list[i] = temp;

            }

        }

 

        /// <summary>

        /// 选者最大值排序法

        /// </summary>

        /// <param name="list">进行排序的整型数组</param>

        public static void SelectMaxSorter(int[] list)

        {

            int max, temp;

            for (int i = 0; i < list.Length; i++)

            {

                max = i;

                for (int j = i + 1; j < list.Length; j++)

                {

                    if (list[j] > list[max])

                        max = j;

                }

                temp = list[max];

                list[max] = list[i];

                list[i] = temp;

            }

        }

 

插入排序

每次将一个待排序的数据元素,插入到前面已经排好序的数列中的适当位置,使数列依然有序;直到待排序数据元素全部插入完为止。

        /// <summary>

        /// 插入排序

        /// </summary>

        /// <param name="list">进行排序的整型数组</param>

        public static void InsertSorter(int[] list)

        {

            int j,temp;

            for (int i = 1; i < list.Length; i++)

            {

                j =  i;

                temp = list[i];

                while ((j > 0) && (list[j - 1] > temp))

                {

                    list[j] = list[j - 1];

                    --j;

                }

                list[j] = temp;

            }

        }

 

希尔排序

将组分段,进行插入排序

        /// <summary>

        /// 希尔排序

        /// </summary>

        /// <param name="list">进行排序的整型数组</param>

        public static void ShellSorter(int[] list)

        {

            int inc;

            for (inc = 1; inc < list.Length / 9; inc = 3 * inc + 1) ;

            for (; inc > 0; inc /= 3)

            {

                for (int i = inc + 1; i <= list.Length; i += inc)

                {

                    int temp = list[i - 1];

                    int j = i;

                    while ((j > inc) && (list[j - inc - 1] > temp))

                    {

                        list[j - 1] = list[j - inc - 1];

                        j -= inc;

                    }

                    list[j - 1] = temp;

                }

            }

        }

 

 
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C#常用排序算法 还可以

常用的排序算法详解(C#版)

只要是搞编程的算法、数据结构、操作系统、计算机组成原理这些东西都会有用到,就像医生给人治病一样,只有了解了人的内部机理、运作机制,才能很好的做到对症下药,药到病除。而上面所说的那些计算机理论课就好像人...

C#中常用的几种排序算法

没事总结了一下平时C#中比较常见的排序算法,其中有稳定的 也有不稳定的,使用时自行斟酌,下面是具体脚本: using System; using System.Collections.Generic...

使用C#详解常用排序算法(一):概述

最近在复习一些算法相关的知识,为了加深对各种算法的理解和认识,使用C#语言把各种类型的排序算法实现了一下,现发篇博客,与大家共享,也希望的到批评指正。本文主要依据和参考文献为Thomas H.Corm...

使用C#详解常用排序算法(二):插入排序(Insert Sort)

结合代码和运行输出详细讲解插入排序的排序过程

常用排序算法复杂度

  • 2017-09-22 16:11
  • 16KB
  • 下载

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

C#实现所有经典排序算法1、选择排序 class SelectionSorter    {        private int min; ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)