zoukankan      html  css  js  c++  java
  • Quick Sort

        快速排序是对冒泡排序的一种改进。它基于分治策略,对于要排序的一个序列,从中选一值进行排序,将其放入到正确的位置position。然后以position为界,对左右两部分再分别做排序。直到划分的长度为1。具体实现如下:

    代码
            /// <summary>
            
    /// 快速排序
            
    /// </summary>
            
    /// <param name="data"></param>
            public static void QuickSort(int[] data)
            {
                
    if (data == null || data.Length < 1)
                {
                    
    throw new ArgumentNullException("data");
                }

                Quick(data, 
    0, data.Length);
            }

            
    private static void Quick(int[] data, int low, int high)
            {
                
    if (data == null || data.Length < 1)
                {
                    
    throw new ArgumentNullException("data");
                }
                
    if (low < 0 || low >= data.Length || high < 0 || high > data.Length)
                {
                    
    return;
                }

                
    if (low < high)
                {
                    
    int i = low, j = high, temp;
                    
    while (true)
                    {
                        
    do
                        {
                            i
    ++;
                        } 
    while (i < high && data[i] < data[low]);
                        
    do
                        {
                            j
    --;
                        } 
    while (j > low && data[j] > data[low]);

                        
    if (i < j)
                        {
                            temp 
    = data[i];
                            data[i] 
    = data[j];
                            data[j] 
    = temp;
                        }
                        
    else
                        {
                            temp 
    = data[j];
                            data[j] 
    = data[low];
                            data[low] 
    = temp;

                            
    break;
                        }
                    }

                    Quick(data, low, j
    );
                    Quick(data, j 
    + 1, high);
                }
            }
  • 相关阅读:
    问题:关于抛出例外的一个问题。
    向北京球迷致敬!!!
    [下载]高质量C++C编程指南
    WinCE.NET中播放声音
    WINCE.NET中程序只运行一次
    解决vs2003开发PDA(wince.net4.2)调试与部署问题
    WinCE.NET中设置系统日期时间
    网页上发送mail(PHP)
    点阵字库预览工具 V1.0.0
    WINCE.NET4.2下如何获取程序当前运行目录
  • 原文地址:https://www.cnblogs.com/Langzi127/p/1691646.html
Copyright © 2011-2022 走看看