关注
对了,那个第四个问题有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
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享

点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 国企还是互联网,你怎么选? #
122567次浏览 946人参与
# 找工作,行业重要还是岗位重要? #
8438次浏览 105人参与
# 五一之后,实习真的很难找吗? #
47109次浏览 339人参与
# 应届生进小公司有什么影响吗 #
67238次浏览 984人参与
# 盲审过后你想做什么? #
13006次浏览 117人参与
# 25届秋招公司红黑榜 #
257353次浏览 1083人参与
# 小厂实习有必要去吗 #
42366次浏览 260人参与
# 领导秒批的请假话术 #
10209次浏览 76人参与
# 蚂蚁集团工作体验 #
10829次浏览 70人参与
# 外包能不能当跳板? #
22312次浏览 192人参与
# 设计人如何选offer #
98592次浏览 690人参与
# 五一假期,你打算“躺”还是“卷”? #
33922次浏览 456人参与
# 考研可以缓解求职焦虑吗 #
21617次浏览 255人参与
# 如果校招重来我最想改变的是 #
245340次浏览 2781人参与
# 面试等了一周没回复,还有戏吗 #
116008次浏览 1078人参与
# 大疆的机械笔试比去年难吗 #
69720次浏览 603人参与
# 一句话证明你在找工作 #
291988次浏览 2397人参与
# 潍柴工作体验 #
17034次浏览 17人参与
# 硬件人,你被哪些公司给挂了 #
46888次浏览 724人参与
# 找工作前vs找工作后的心路变化 #
7249次浏览 64人参与