关注
对了,那个第四个问题有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
相关推荐
点赞 评论 收藏
分享
10-24 11:39
广东工业大学 Web前端
LZStarV:项目太简单了,你像用什么开发的技术栈没必要写一句话,按点写就好了;有特色的比如说WebSocket、视频流这种狠狠吹,那就好看多了 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 如果秋招能重来,我会____ #
6856次浏览 69人参与
# 苦尽甘来时,再讲来时路 #
6612次浏览 129人参与
# 快手技术岗信息交流阵地 #
11709次浏览 73人参与
# 如果上班像打游戏,你最想解锁什么技能 #
1682次浏览 30人参与
# 机械求职避坑tips #
70673次浏览 484人参与
# 为了实习逃课值吗? #
9502次浏览 89人参与
# “vivo”个offer #
14944次浏览 130人参与
# 校招生月薪1W算什么水平 #
1702次浏览 18人参与
# 一份好的简历长什么样? #
4804次浏览 129人参与
# 选择和努力,哪个更重要? #
132271次浏览 1008人参与
# 秋招许愿,本周能____ #
11372次浏览 78人参与
# 投递无反馈,如何优化求职策略? #
1761次浏览 26人参与
# 材料专业可以靠半导体脱坑吗? #
26372次浏览 138人参与
# 应届生第一份工资要多少合适 #
2798次浏览 33人参与
# 班味很重的人是啥样的? #
2983次浏览 29人参与
# 机械制造秋招总结 #
81799次浏览 816人参与
# 大学最后一个寒假,我想…… #
59423次浏览 645人参与
# 新凯来求职进展汇总 #
57422次浏览 150人参与
# 选完offer后,你后悔学机械吗? #
42440次浏览 247人参与
# 华为海思工作体验 #
33338次浏览 139人参与
# 职场新人体验 #
116061次浏览 806人参与
# 25届非技术实习投递记录 #
134335次浏览 995人参与
九号公司成长空间 1人发布