学习目标:
我会持续更新我独特的算法思路,希望能给大家带来不一样的思维拓展!
如果大家感觉有帮助的话,欢迎点赞关注支持哦!
你们的鼓励是我坚持下去的动力!
!!!
学习内容:
堆排序
牛客网链接
学习时间:
2022.4.10
学习产出:
问题1:数组分界
解决方案
问题二:荷兰国旗问题
using System;
class test{
static void Main(){
string[] getin=Console.ReadLine().Split(' ');
int count=Convert.ToInt32(getin[0]);
int Target=Convert.ToInt32(getin[1]);
string[] input=Console.ReadLine().Split(' ');
int[] arr=new int[count];
for(int i=0;i<count;i++){
arr[i]=Convert.ToInt32(input[i]);
}
int[] res=partition(arr,0,count-1,Target);
if(res[0]>res[1]){
Console.WriteLine(-1+" "+-1);
}else{
Console.WriteLine(res[0]+" "+res[1]);
}
}
static int[] partition(int[] arr,int L,int R,int P){
int less=L-1;
int more=R+1;
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++;
}
}
return new int[]{
less+1,more-1};
}
static void Swap(int[] arr,int i,int j){
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}