关注
对了,那个第四个问题有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
相关推荐
牛客热帖
更多
正在热议
更多
# 除了Java,最推荐学什么技术? #
844次浏览 43人参与
# AI时代的工作 VS 传统时代的工作,有哪些不同? #
1014次浏览 49人参与
# 你的landing期是如何度过的? #
542次浏览 18人参与
# 滴滴求职进展汇总 #
298574次浏览 2442人参与
# 秋招报数:你投了多少家公司? #
148183次浏览 945人参与
# 机械制造面试点评 #
83876次浏览 469人参与
# 你觉得早上几点上班合适? #
94201次浏览 352人参与
# 机械人与华为的爱恨情仇 #
147094次浏览 1029人参与
# 机械只有转码才有出路吗? #
159250次浏览 1652人参与
# 我和mentor的爱恨情仇 #
102506次浏览 924人参与
# 如何提高实习转正率? #
80697次浏览 487人参与
# 聊聊你的被动加班经历 #
7773次浏览 96人参与
# 为了秋招你都做了哪些准备? #
31457次浏览 532人参与
# 你觉得mentor喜欢什么样的实习生 #
45160次浏览 986人参与
# Tplink求职进展汇总 #
199080次浏览 937人参与
# 牛客十周岁生日快乐 #
207573次浏览 1936人参与
# 实习期间如何提升留用概率? #
230801次浏览 1786人参与
# 你觉得什么岗位会被AI替代 #
35188次浏览 236人参与
# 美的求职进展汇总 #
344031次浏览 2064人参与
# 互联网公司评价 #
480307次浏览 4096人参与