Loading

代码题备忘

不是很重要的时候可以直接用
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; // 查找失败
}
posted @ 2022-10-31 15:59  ColdWater216  阅读(27)  评论(0)    收藏  举报