#include<iostream>
void QuickSort(int iArray[],int left, int right)
{
//快速排序之前先判断一下当前待排序数组元素个数是不是大于1 否则就没有必要排序
if (left >= right)
{
//直接退出排序代码 没有必要进行排序了
return;
}
//开始进行快排算法
//首先我们先保存left索引对应的数据 当前数据作为切割数组的轴
int piovt = iArray[left];
//定义临时变量保存数组2端的索引
int leftIndex = left;
int rightIndex = right;
while (leftIndex < rightIndex)
{
//现在我们通过循环从右边开始搜索一个比轴值小的数据
while (leftIndex < rightIndex)
{
//如果右边的数大于当前的参数轴值
if (piovt <= iArray[rightIndex])
{
//右端索引指示器左移
rightIndex--;
}
else
{
//说明我们右端出现比轴值更大的数据
//这个时候我们就可以把这个更大的数据填充到索引轴索引对应的地方
iArray[leftIndex] = iArray[rightIndex];
leftIndex++;
//我们需要跳出循环了当前工作完毕
break;
}
}
//从左边开始搜索一个比轴值更大的数填写上次留下的坑
while (leftIndex < rightIndex)
{
//如果左边的数据小于轴值 我们索引指示器就往右走
if (piovt >= iArray[leftIndex])
{
leftIndex++;
}
else
{
//说明我们在左端找到了比轴值更大的数据
iArray[rightIndex] = iArray[leftIndex];
rightIndex--;
break;
}
}
}
iArray[leftIndex] = piovt;
QuickSort(iArray, left, leftIndex - 1);
QuickSort(iArray, rightIndex + 1, right);
}
int main()
{
int arry[] = { 3,21,87,1,21,10 };
QuickSort(arry, 0, 5);
for (int i = 0; i < 6; i++)
{
std::cout << arry[i] << std::endl;
}
return 0;
}
京东笔试时间为19.00-21.00
选择题有单选跟多选,大部分为测试相关知识,然后两道程序题
第一题 找中位数的问题
#include<iostream>
#include<vector>
using namespace std;
float Median(vector<int> a, int N)
{
int i, j, max;
int t;
for (i = 0; i < N - 1; i++)
{
max = i;
for (j = i + 1; j<N; j++)
if (a[j]>a[max]) max = j;
t = a[i]; a[i] = a[max]; a[max] = t;
}
if (N % 2 == 0)
return (float)(a[(N - 1) / 2] + a[N / 2])/2;
else
return a[(N - 1) / 2];
}
int main()
{
vector<int> a;
int n;
cin >> n;
for (int i = 0; i < n; i++)
{
int temp;
cin >> temp;
a.push_back(temp);
}
int length = a.size();
cout << Median(a, length) << endl;
system("pause");
}
#include <iostream>
#include <vector>
using namespace std ;
//测试程序
int n;
int find(int a, int b, int n )
{
for (int i = 1; i <= n ; i++)
{
if (i != a && i != b) return i;
}
}
void travel(vector<vector<bool >> & linked, int begin , int& geshu , vector<bool> & visit)
{
for (int i = 1; i <= n; i++)
{
if (!visit[i] && i != begin && ( linked[i][begin]|| linked[begin][i] ))
{
visit[i] = true;
cout << i << "->";
travel(linked, i, ++geshu, visit);
}
}
}
int main()
{
cin >> n ;
vector<vector<bool >> linked(n + 1, vector<bool>(n + 1 , false));
vector<int> a (n , 0 );
vector <int> b(n, 0);
for (int i = 0; i < n - 1; i++)
{
cin >> a[i] >> b[i];
linked[a[i]][b[i]] = true;
linked[b[i]][a[i]] = true;
}
int max_max = 0;
int dian = 0;
for (int i = 0; i < n - 1; i++)
{
linked[a[i]][b[i]] = false;
linked[b[i]][a[i]] = false;
vector<bool> visit(n+1, false);
int t = find(a[i], b[i], n);
visit[t] = true;
cout << t << "->";
dian = 1;
travel(linked, t , dian , visit);
cout << endl;
cout <<t<< " "<< dian << " " << (n - dian) << " " << dian*(n - dian) << endl;
if (max_max < ((dian - 1) *(n - dian - 1)))
max_max = ((dian - 1) *(n - dian - 1));
linked[a[i]][b[i]] = true;
linked[b[i]][a[i]] = true;
}
cout << max_max << endl;
system("pause");
return 0;
}