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

     快速排序,算法并不稳定,需要优化,根据不稳定因素优化,涉及多个概念。

    快速排序

    堆积树

    大根堆

    小根堆

    完全二叉树

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace FastSort
    {
        class Program
        {
            static void Main(string[] args)
            {
                int[] array = { 49, 38, 65, 97, 76, 13, 27,88,77,33,22,11, };
                sort(array, 0, array.Length - 1);
                Console.ReadLine();
            }
    
            /**一次排序单元,完成此方法,key左边都比key小,key右边都比key大。
     
            **@param array排序数组 
     
            **@param low排序起始位置 
     
            **@param high排序结束位置
            **@return单元排序后的数组 */
    
            static int sortUnit(int[] array, int low, int high)
            {
                int key = array[low];
                while (low < high)
                {
                    /*从后向前搜索比key小的值*/
                    while (array[high] >= key && high > low)
                        --high;
                    /*比key小的放左边*/
                    array[low] = array[high];
                    /*从前向后搜索比key大的值,比key大的放右边*/
                    while (array[low] <= key && high > low)
                        ++low;
                    /*比key大的放右边*/
                    array[high] = array[low];
                }
                /*左边都比key小,右边都比key大。//将key放在游标当前位置。//此时low等于high */
                array[low] = key;
                foreach (int i in array)
                {
                    Console.Write("{0}	", i);
                }
                Console.WriteLine();
                return high;
            }
    
            /**快速排序 
            *@paramarry 
            *@return */
            public static void sort(int[] array, int low, int high)
            {
                if (low >= high)
                    return;
                /*完成一次单元排序*/
                int index = sortUnit(array, low, high);
                /*对左边单元进行排序*/
                sort(array, low, index - 1);
                /*对右边单元进行排序*/
                sort(array, index + 1, high);
            }
        }
    }

    以上代码复制自百度百科,自己调试使用。

  • 相关阅读:
    arduino编程基础之--程序 元素
    arduino编程基础之--环境搭建
    C语言高手之路--目录
    生活中的数据结构
    Manjaro-KDE配置全攻略转
    多线程程序的奇怪问题记录
    manjaro安装openmv ide
    Linux进程数据结构详解
    Linux ps aux指令詳解--转
    记一次粗心大意的代码错误
  • 原文地址:https://www.cnblogs.com/Tpf386/p/8066052.html
Copyright © 2011-2022 走看看