hdzattain-题解

排序

http://www.nowcoder.com/questionTerminal/2baf799ea0594abd974d37139de27896

class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* 将给定数组排序
* @param arr int整型vector 待排序的数组
* @return int整型vector
*/
vector<int> MySort(vector<int>& arr) {
// write code here
Sort(arr,0,arr.size()-1);
return arr;
}
int Partition(vector<int> &arr,int low,int high){//合并
int i=low,k=high;
int temp = arr[low];//临时变量存low里的值
while(i<k){
while(i<k&& temp<=arr[k]) --k;//找到第一个小于temp的数字
if(i<k) arr[i++] = arr[k];//把它放在小端,i位置已经记录于temp
while(i<k&&arr[i]<=temp) ++i;//找到左边第一个大于temp的数字
if(i<k) arr[k--] = arr[i];//把他放在大端,k位置前面已经移动
}
arr[i] =temp;//放好temp
return i;
}
void Sort(vector<int> &arr,int low,int high){//拆分
if(low>=high)//base case
return ;
int pos = Partition(arr,low,high);
Sort(arr,low,pos-1);//左
Sort(arr, pos+1, high);//右
}
};
//一段用于加速的代码
static const auto io_sync_off = //这边不能加;分号,这是一个lambda函数
{
std::ios::sync_with_stdio(false);//关掉输入输出同步,解除流缓冲区,这时不能混用printf,scanf,cin,cout
std::cin.tie(nullptr);//nullptr是一个字面值常量,可以转换为任意类型的空指针,tie是将两个stream绑定函数,这里用空指针解除cin和cout的绑定,加速io
return nullptr;
}();</int></int></int></int>

全部评论

相关推荐

牛客263158796号:我领羊一面后十天不挂也不推进 今天问hr说等前序的第一批意向发完看情况再看是否推进
点赞 评论 收藏
分享
牛客279957775号:铁暗恋
点赞 评论 收藏
分享
11-24 00:11
已编辑
广东工业大学 算法工程师
避雷深圳&nbsp;&nbsp;yidao,试用期&nbsp;6&nbsp;个月。好嘛,试用期还没结束,就直接告诉你尽快找下一家吧,我谢谢您嘞
牛客75408465号:笑死,直属领导和 hr 口径都没统一,各自说了一些离谱的被裁理由,你们能不能认真一点呀,哈哈哈哈哈😅😅😅
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务