代码题备忘
不是很重要的时候可以直接用
int max = Max_int; //初始设置为最大整数
max(a,b); //选大的
输入输出函数cin cout
A[i++]:先用i,在自增;A[++i]:先自增,再用i
交换函数swap(a,b);
快排
int partition(int nums[], int left, int right) {
随机选择一个数组下标为left ~ right 的元素和nums[left]进行交换 //快排优化
int pivot = nums[left];
while (left < right) { // 以枢轴为中界,划分左右
while (left < right && nums[right] >= pivot)
right --;
nums[left] = nums[right];
while (left < right && nums[left] <= pivot)
left ++;
nums[right] = nums[left];
}
nums[left] = pivot;
return left;
}
void quick_sort(int nums[], int left, int right) {
if (left < right) {
int pivotpos = partition(nums, left, right);
quick_sort(nums, left, pivotpos - 1); //对左边部分递归
quick_sort(nums, pivotpos + 1, right);
}
}
折半查找
int binary_search(int[] A, ,int n, int target) { // n为数组元素个数, target是要找的目标元素
int left = 0, right = n - 1, mid;
while (left < right) {
mid = (left + right) / 2; // 取中间位置
if (A[mid] == target) {
return mid; // 查找成功返回所在位置
} else if (A[mid] > target) {
right = mid - 1; // 在前半部分继续查找
} else {
left = mid + 1; // 在后半部分继续查找
}
}
return -1; // 查找失败
}

浙公网安备 33010602011771号