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);
                }
            }
  • 相关阅读:
    【ELK】重置 elasticsearch 的超管 elastic 账号密码
    python两种获取剪贴板内容的方法
    python创建列表和向列表添加元素方法
    7道Python函数相关的练习题
    Python中的那些“坑”
    Python基础教程:copy()和deepcopy()
    Python教程:optparse—命令行选项解析器
    Python教程:面向对象编程的一些知识点总结
    第一个pypi项目发布成功
    一个Markdown文件处理程序
  • 原文地址:https://www.cnblogs.com/Langzi127/p/1691646.html
Copyright © 2011-2022 走看看