关注
对了,那个第四个问题有O(N)的解法,是快速选择的思想
下面是我实现的代码
#include <iostream>
using namespace std;
#define MAX_SIZE 2001
//int a[2001];
void swap(int *a, int *b)
{
int tmp = *a;
*a = *b;
*b = tmp;
}
int partition(int a[], int low, int high)
{
int privotKey = a[low]; //基准元素
while (low < high){ //从表的两端交替地向中间扫描
while (low < high && a[high] >= privotKey) --high; //从high 所指位置向前搜索,至多到low+1 位置。将比基准元素小的交换到低端
swap(&a[low], &a[high]);
while (low < high && a[low] <= privotKey) ++low;
swap(&a[low], &a[high]);
}
//a[low] = privotKey;
return low;
}
void Top100(int a[], int k,int start,int end){
int i = start;
int j = end - 1;
int index = partition(a, i, j);
while (index!=end-k-1) //数组后100
{
if (index<end - k - 1)
{
i = ++index;
index = partition(a, i, j);
}
else
{
j = index;
index = partition(a, i, j);
}
}
}
int main()
{
int a[] = { 1111, 22222, 3333, 4, 5, 6, 7, 8,9 ,10};
Top100(a, 3, 0, 10);
for (int i = 0; i <10 ; i++)
{
cout << a[i]<<endl;
}
return 0;
}
查看原帖
点赞 1
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
01-15 15:02
Nanyang Technological University 算法工程师 点赞 评论 收藏
分享
迷茫的大四🐶:base不满足是为什么
,实习薪资开高一点也行吧
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 在大厂上班是一种什么样的体验 #
10663次浏览 133人参与
# 你认为工作的意义是什么 #
249216次浏览 1498人参与
# 程序员找工作至少要刷多少题? #
18424次浏览 247人参与
# 为了减少AI幻觉,你注入过哪些设定? #
4591次浏览 149人参与
# 我现在比当时_,你想录用我吗 #
8669次浏览 111人参与
# 机械人避雷的岗位/公司 #
43428次浏览 299人参与
# 一张图晒一下你的AI员工 #
5048次浏览 114人参与
# 论秋招对个人心气的改变 #
10835次浏览 155人参与
# 关于春招/暑期实习,你想知道哪些信息? #
7463次浏览 119人参与
# 刚入职的你踩过哪些坑 #
6834次浏览 127人参与
# AI Coding的使用心得 #
4632次浏览 101人参与
# 晒晒你司的新年福利 #
8439次浏览 105人参与
# 牛客AI体验站 #
6747次浏览 186人参与
# 12306一秒售罄,你抢到回家的票了吗? #
1955次浏览 47人参与
# 柠檬微趣工作体验 #
14777次浏览 83人参与
# 总结:哪家公司面试体验感最差 #
93005次浏览 430人参与
# 程序员能干到多少岁? #
8594次浏览 115人参与
# 你认为小厂实习有用吗? #
118044次浏览 679人参与
# 互联网公司评价 #
485610次浏览 4109人参与
# 应届生进小公司有什么影响吗 #
118285次浏览 1159人参与