刷题百天计划 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; }}