• 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);
                }
            }
  • 相关阅读:
    p1229
    2017.01.21
    P1136 超车 归并排序 求逆序对个数
    2017年寒假计划
    递归一题总结(OJ P1117倒牛奶)
    原来scanf读入字符串还能这样..
    2016NOIP总结
    公式推♂倒题
    kmp+DP x 子串相关的计数问题
    XXXXXXXX不会太多吧?
  • 原文地址:https://www.cnblogs.com/Langzi127/p/1691646.html
Copyright © 2020-2023  润新知