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

        }

    }

  • 相关阅读:
    数据库语句中(+)是什么意思
    MySQL的存储引擎(二)解决Warning Code : 3719 'utf8' is currently an alias for the character set UTF8MB3,...
    MSQL存储引擎(一)
    fastjson的使用,在redis里面存list
    js的发展历史,笔记
    spring的断言工具类Assert的基本使用
    httpclient的使用
    nginx的反向代理
    使用 Redis 连接池的原因
    springboot的yml自定义值的笔记
  • 原文地址:https://www.cnblogs.com/solo/p/610139.html
Copyright © 2011-2022 走看看