> 文档中心 > 刷题百天计划 Day20 快速排序的实现方法 中等

刷题百天计划 Day20 快速排序的实现方法 中等

文章目录

  • 学习目标:
  • 学习内容:
  • 学习时间:
  • 学习产出:
      • 快排1.0 2.0
      • 快排3.0

学习目标:

我会持续更新我独特的算法思路,希望能给大家带来不一样的思维拓展!
如果大家感觉有帮助的话,欢迎点赞关注支持哦!
你们的鼓励是我坚持下去的动力!
!!!

学习内容:

快排
牛客网链接
在这里插入图片描述

学习时间:

2022.4.14

学习产出:

快排1.0 2.0

在这里插入图片描述
实现代码
在这里插入图片描述

快排3.0

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

using System;class test{    static void Main(){ int count=Convert.ToInt32(Console.ReadLine()); string[] input=Console.ReadLine().Split(' '); int[] arr= new int[count]; for(int i=0;i<count;i++){     arr[i]=Convert.ToInt32(input[i]); }  Process(arr,0,count-1);  for(int i=0;i<count;i++){     Console.Write(arr[i]+" "); }     } static void Process(int[] arr,int L,int R){ if(L<R){     Random random = new Random();     Swap(arr,random.Next(L,R),R);     int[] p=Partation(arr, L, R, arr[R]);     Process(arr,L, p[0]);     Process(arr,p[1],R); }    } static int[] Partation(int[] arr,int L,int R,int p){ int less=L-1; int more=R; int index=L;  while(index<more){     if(arr[index]<p){  Swap(arr, ++less, index++);     }else if(arr[index]>p){  Swap(arr, --more, index);     }else{  index++;     } } Swap(arr,more, R); //调到最后去 return new int[]{less,more+1};    } static void Swap(int[] arr,int x,int y){ int temp=arr[x]; arr[x]=arr[y]; arr[y]=temp;    }}