zoukankan      html  css  js  c++  java
  • 快速排序(QuickSort)用C# 实现的小例子

        class QuickSort
        
    {
            
    public void Sort(int[] data, int start, int end)
            
    {
                
    if (start >= end) return;
                
    if (start + 1 == end)
                
    {
                    
    if (data[start] > data[end])
                        Swap(data, start, end);

                    
    return;
                }


                
    int indexL = start + 1, indexR = end;
                
    while (indexL < indexR)
                
    {
                    
    // Get from left
                    while (indexL <= end && data[start] >= data[indexL])
                        indexL
    ++;

                    
    // Get from right
                    while (indexR > start && data[start] < data[indexR])
                        indexR
    --;

                    
    if (indexL < indexR)
                    
    {
                        Swap(data, indexR, indexL);
                    }

                }


                
    if(indexL-1 !=start)
                    Swap(data, start, indexL 
    - 1);


                Sort(data, start, indexL 
    - 2);
                Sort(data, indexL, end);
            }


            
    private void Swap(int[] data, int x, int y)
            
    {
                data[x] 
    = data[x] + data[y];
                data[y] 
    = data[x] - data[y];
                data[x] 
    = data[x] - data[y];
            }

        }

  • 相关阅读:
    Harvest of Apples (HDU多校第四场 B) (HDU 6333 ) 莫队 + 组合数 + 逆元
    BZOJ4383/LuoGuP3588 Pustynia/PUS 线段树建图优化
    初识splay
    nowcoder牛客wannafly挑战赛20
    初识树链剖分
    二维数据结构---线段树
    初识莫队——小Z的袜子
    kuangbin带我飞QAQ 并查集
    十个二分九个错?教你如何优雅地写二分查找
    Codeforces Round #436 (Div. 2) E. Fire(dp 记录路径)
  • 原文地址:https://www.cnblogs.com/skywind/p/1131612.html
Copyright © 2011-2022 走看看