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);
                }
            }
  • 相关阅读:
    判断回车键自动提交
    WCF开发使用证书文件配置基于自定义X509证书
    递归算法
    Web网站开发常用正则表达式
    WINDSOW2003 IIS配置后无法显示 ASP网页的问题
    如何写好软件开发需求文档
    Bitmap Drawable Canvas Paint比较
    Android开发:LayoutParams的用法
    华为投身互联网:吹了冲锋号 就要往前冲
    android 获取手机号问题
  • 原文地址:https://www.cnblogs.com/Langzi127/p/1691646.html
Copyright © 2011-2022 走看看