WEB开发网
开发学院软件开发C语言 c#实现冒泡、快速、选择和插入排序算法 阅读

c#实现冒泡、快速、选择和插入排序算法

 2009-04-11 08:25:12 来源:WEB开发网   
核心提示: 网上还有一种相似的代码,一起贴出来:using System;namespace QuickSorter{ public class QuickSorter { /// <summary> /// 快速排序算法 /// </summary> /// 快速排序为不稳定

网上还有一种相似的代码,一起贴出来:

using System;

namespace QuickSorter
{
    public class QuickSorter
    {
        /// <summary>
        /// 快速排序算法
        /// </summary>
        /// 快速排序为不稳定排序,时间复杂度O(nlog2n),为同数量级中最快的排序方法
        /// <param name="arr">划分的数组</param>
        /// <param name="low">数组低端上标</param>
        /// <param name="high">数组高端下标</param>
        /// <returns></returns>
        public static int Partition(int[] arr, int low, int high)
        {
            //进行一趟快速排序,返回中心轴记录位置
            // arr[0] = arr[low];
            int pivot = arr[low];//把中心轴置于arr[0]
            while (low < high)
            {
                while (low < high && arr[high] >= pivot)
                    --high;
                //将比中心轴记录小的移到低端
                Swap(ref arr[high], ref arr[low]);
                while (low < high && arr[low] <= pivot)
                    ++low;
                Swap(ref arr[high], ref arr[low]);
                //将比中心轴记录大的移到高端
            }
            arr[low] = pivot; //中心轴移到正确位置
            return low;  //返回中心轴位置
        }
        public static void Swap(ref int i, ref int j)
        {
            int t;
            t = i;
            i = j;
            j = t;
        }
        public static void Sort(int[] arr, int low, int high)
        {
            if (low < high - 1)//当 arr[low,high]为空或只一个记录无需排序
            {
                int pivot = Partition(arr, low, high);
                Sort(arr, low, pivot - 1);
                Sort(arr, pivot + 1, high);

            }
        }

    }

    public class Program
    {
        static void Main(string[] args)
        {
            int[] arr = new int[] { 20, 41, 27, 14, 16, 1, 8, 55, 9, 35, 22, 14 };
            QuickSorter.Sort(arr, 0, arr.Length - 1);
            Console.WriteLine("Numbers after quicksort:");
            foreach (int i in arr)
            {
                Console.WriteLine(i);
            }

            Console.Read();
        }
    }
}

上一页  1 2 3 4 5 6  下一页

Tags:实现 冒泡 快速

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接