zoukankan      html  css  js  c++  java
  • 快速排序

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace Sort
    {
        class QSort
        {
            static public void Sort1(int[] arr, int beg, int end)
            {
                if (end - beg < 1)
                    return;
    
                if(end == beg+1)
                {
                    if (arr[beg] > arr[end])
                        lib.Swap<int>(arr, beg, end);
                    return;
                }
    
                int current = beg+1;
                int midVal = arr[beg];
    
                for(int i = beg+1; i<=end; i++)
                {
                    if(arr[i] < midVal)
                    {
                        lib.Swap<int>(arr, i, current);
                        current++;
                    }
                }
                lib.Swap<int>(arr, beg, current-1);
    
                Sort1(arr, beg, current - 2);
                Sort1(arr, current, end);
            }
    
            static public void Sort2(int[] arr, int beg, int end)
            {
                if (end - beg < 1)
                    return;
    
                if (end == beg + 1)
                {
                    if (arr[beg] > arr[end])
                        lib.Swap<int>(arr, beg, end);
                    return;
                }
    
                int midVal = arr[beg];
                int minIdx = beg+1;
                int maxIdx = end;
    
                while(minIdx < maxIdx)
                {
                    while (minIdx < maxIdx && arr[minIdx] < midVal)
                        minIdx++;
    
                    while (minIdx < maxIdx && arr[maxIdx] >= midVal)
                        maxIdx--;
    
                    if (minIdx != maxIdx)
                        lib.Swap<int>(arr, minIdx, maxIdx);
                }
    
                if (arr[minIdx] >= midVal)
                {
                    lib.Swap<int>(arr, minIdx - 1, beg);
                    Sort2(arr, beg, minIdx - 2);
                    Sort2(arr, minIdx, end);
                }
                else
                {
                    lib.Swap<int>(arr, minIdx, beg);
                    Sort2(arr, beg, minIdx - 1);
                    Sort2(arr, minIdx+1, end);
                }
            }
    
            static public void Sort3(int[] arr, int beg, int end)
            {
                if (beg >= end)
                    return;
    
                if (end == beg + 1)
                {
                    if (arr[beg] > arr[end])
                        lib.Swap<int>(arr, beg, end);
                    return;
                }
    
                int first = beg;
                int last = end;
                int key = arr[beg];
    
                while (last > first)
                {
                    if (arr[last] > key)
                    {
                        last--;
                        continue;
                    }
    
                    if (arr[first] <= key)
                    {
                        first++;
                        continue;
                    }
                    lib.Swap(arr, first, last);
                }
                lib.Swap(arr, beg, first);
    
                Sort3(arr, beg, first - 1);
                Sort3(arr, first + 1, end);
            }
        }
    }
  • 相关阅读:
    Shiro 登录、退出、校验是否登录涉及到的Session和Cookie
    Apache Tomcat 8.0 官方文档
    FastDFS分布式文件系统(主备Tracker、主备Storage)
    PHP文件系统
    PHP 文件包含
    PHP函数
    PHP 全局变量
    PHP7新增知识点
    PHP数据
    PHP常量
  • 原文地址:https://www.cnblogs.com/wrbxdj/p/4986452.html
Copyright © 2011-2022 走看看