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();
            }

        }

    }

  • 相关阅读:
    ChaosBlade x SkyWalking 微服务高可用实践
    工商银行基于 Dubbo 构建金融微服务架构的实践-服务发现篇
    阿里 双11 同款流控降级组件 Sentinel Go 正式 GA,助力云原生服务稳稳稳
    我在阿里巴巴做 Serverless 云研发平台
    「更高更快更稳」,看阿里巴巴如何修炼容器服务「内外功」
    「云原生上云」后的聚石塔是如何应对 双11 下大规模应用挑战的
    从零入门 Serverless | SAE 的远程调试和云端联调
    利用 Arthas 解决启动 StandbyNameNode 加载 EditLog 慢的问题
    Arthas 实践——生产环境排查 CPU 飚高问题
    RocketMQ 很慢?引出了一个未解之谜
  • 原文地址:https://www.cnblogs.com/solo/p/610139.html
Copyright © 2011-2022 走看看