zoukankan      html  css  js  c++  java
  • 快速排序(C#数据结构学习十)

    using System;
    using System.Collections.Generic;
    using System.Text;

    namespace SoloDataStructure
    {
        
    class MyQuickSort
        
    {
            
    /// <summary>
            
    /// 快速排序算法
            
    /// </summary>
            
    /// 快速排序为不稳定排序,时间复杂度O(nlog2n),为同数量级中最快的排序方法
            
    /// <param name="arr">划分的数组</param>
            
    /// <param name="low">数组低端上标</param>
            
    /// <param name="high">数组高端下标</param>
            
    /// <returns></returns>

            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;  //返回中心轴位置
            }

            
    static void Swap(ref int i, ref int j)
            
    {
                
    int t;
                t 
    = i;
                i 
    = j;
                j 
    = t;
            }
     
            
    static void QuickSort(int[] arr,int low,int high)
            
    {
                
    if (low < high-1)//当 arr[low,high]为空或只一个记录无需排序
                {
                    
    int pivot = Partition(arr,low,high);
                    QuickSort(arr,low,pivot
    -1);
                    QuickSort(arr,pivot
    +1,high);

                }

            }

            
    static void Main(string[] args)
            
    {
                
    int[] arr=new int[]{54,62,99,14,28,1,8,77,99,3,110};
                QuickSort(arr, 
    0, arr.Length-1);
                Console.Write(
    "Data After QuickSort:");
                
    foreach (int i in arr)
                
    {
                    Console.Write(i
    +",");
                }

                Console.ReadLine();
            }

        }

    }

  • 相关阅读:
    一套完整的测试应该由哪些阶段组成?
    测试结束的标准是什么?
    :你的测试职业发展目标是什么?
    您认为做好测试用例设计工作的关键是什么?
    Servlet API中forward()与redirect()的区别?
    AOP 核心概念?
    Spring 中使用了哪些设计模式?
    ArrayList类?
    如何实现拦截器?
    什么是集合?
  • 原文地址:https://www.cnblogs.com/solo/p/610139.html
Copyright © 2011-2022 走看看