机试第3章

TimeTrap Lv2

快速排序(quicksort)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void quicksort(int *a, int l, int r)
{
int mid = a[(l + r) / 2];
int i = l, j = r;
while (i <= j)
{
while (a[i] < mid)
i++;
while (a[j] > mid)
j--;
if (i <= j)
{
swap(a[i], a[j]);
i++, j--;
}
}
if (i < r)
quicksort(a, i, r);
if (l < j)
quicksort(a, l, j);
}

结构体排序

1
2
3
4
5
6
7
8
9
10
11
struct student
{
int x, y;
};

bool cmp(const student &a, const student &b)
{
if (a.x == b.x)
return a.y < b.y;
return a.x < b.x;
}

二分查找

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
bool search(int *a, int n, int target)
{
int l = 0, r = n - 1;
while (l <= r)
{
int mid = l + (r - l) / 2;
if (a[mid] < target)
l = mid + 1;
else if (a[mid] > target)
r = mid - 1;
else
return true;
}
return false;
}

lower_bound(begin, end, val); // 返回大于等于val的地址
upper_bound(begin, end, val); // 返回大于val的地址
  • 本文标题:机试第3章
  • 本文作者:TimeTrap
  • 创建时间:2023-03-07 13:32:32
  • 本文链接:https://timetrapzz.github.io/2023/03/07/机试第3章/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
 评论