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


    using System;


     /// <summary>
     /// 递归快速排序 的摘要说明。
     /// </summary>
     public class QuickSort
     {
      public static void Main()
      {
       int[] intary={45,67,34,23,12,89};
       Console.WriteLine("排序前,输出数组如

    下:");
       printArray(intary);
       quickSort(intary,0,intary.Length-1);
       Console.WriteLine("快速排序之后,输出

    数组如下:");
       printArray(intary);

      }
      private static void printArray(int[] tmpary)
      {
       
       foreach(int tmpnum in tmpary)
       {
        Console.Write(tmpnum+"\t");
       }
       Console.WriteLine();
      }
            private static void quickSort(int[] ary, int start,

    int end)
      {

       int i=start;
       int j=end;
       int pivot=ary[i];//把枢轴的数字独立存

    起来
       while(i<j)
       {
        while(i<j  &&  pivot<=ary

    [j])//从右边找寻比枢轴小的数字,找到后就换到左边枢轴位置去
        {
         j--;
        }
        ary[i]=ary[j];//将找到的较小

    数字换到枢轴位置
        while(i<j && pivot>ary[i])//

    从左边找寻比枢轴大的数字,找到后就换到右边刚才那个大数字的位

    置去
        {
         i++;
        }
        ary[j]=ary[i];//将找到的较大

    数字换到刚才那个空位去
       }
       ary[i]=pivot;//i此时为分隔位置,所有i

    左边的都比枢轴小,所有i右边的都比枢轴大,将枢轴填入此位置
                ary[j] = pivot;
                if (i > start)
                {
                    quickSort(ary, start, i - 1);//使用快速排序法

    递归重排枢轴左边比其小的全部数字
                }
                else
                {
                    //左边递归到此结束
                }
                if (i < end)
                {
                    quickSort(ary, i + 1, end);//使用快速排序法递

    归重排枢轴右边比其大的全部数字
                }
                else
                {
                    //右边递归到此结束
                }
      }
     }

  • 相关阅读:
    学习进度条博客(软件工程)第一周
    随机产生30个两位数的四则运算(包括真分数的计算)
    构建之法阅读笔记01
    感想
    《构建之法》阅读笔记04
    团队冲刺第二天
    第八周学习进度条
    团队冲刺第一天
    第七周学习进度条
    课堂测试03
  • 原文地址:https://www.cnblogs.com/jasonjiang/p/1763541.html
Copyright © 2011-2022 走看看