求数组中第K个最大的值
来源:互联网 发布:网络平台服务协议 编辑:程序博客网 时间:2024/05/16 08:41
方法1:冒泡
public static void main(String[] args) { int k=6; int[] group={0,1,7,3,21,56,95,12,34,43,6,0}; int N=group.length; for(int i=1;i<=N-1;i++) { for(int j=N-1;j>i;j--) { if(group[j-1]<group[j]) { int tmp; tmp=group[j]; group[j]=group[j-1]; group[j-1]=tmp; } } } for(int x=1;x<=N-1;x++) { printnb(group[x]+" "); } print(""); print(group[k]);
输出:
95 56 43 34 21 12 7 6 3 1 0
12
方法2:先将数组前k个数进行排序(递减),然后遍历数组中k+1到N位数…如果这个数小于gk则不做操作,如果大于的话,将会删除当前g[k],将这个数添加到g中,然后排好顺序(逆序)
public class H{ public static void main(String[] args) { int k=6; int[] group={0,1,7,3,21,56,95,12,34,43,6,0}; int N=group.length; for(int i=1;i<=k;i++) { for(int j=k;j>i;j--) { if(group[j-1]<group[j]) { int tmp=group[j]; group[j]=group[j-1]; group[j-1]=tmp; } } } print("将前"+k+"个数排序后:"); for(int x=1;x<=k;x++) { printnb(group[x]+" "); } print(""); for(int v=k;v<=N-1;v++)//遍历k以后的数 { if(group[v]>group[k])//若存在group[v]> { for(int u=1;u<k;u++)//插入衡却位置 { int flag=0; if(group[v]>group[u]) { int haha=group[v]; int pupu=k; while(pupu>u) { group[pupu]=group[pupu-1]; pupu--; } group[u]=haha; break; //此处可以直接跳出for } } } } print(group[k]); } }
输出:
95 56 21 7 3 1
12
注意这里:
public static void main(String[] args) { int a=1; for(int i=1;i<=10;i++) { print(i); if(a==1) { break; } } }
输出:
1
可以证明,break不是跳出if而是外面的for
阅读全文
0 0
- 求数组中第K个最大的值
- 求数组中最大K个值的下标
- 利用python求数组中连续k个相同值的最大的k
- 求第K个最大的数
- 找出数组中第K个最大的数
- 求数组中第K个大小的数
- 求数组中第k个小的元素
- 求数组中最大的k个数
- 求数组中最大的K个数
- 求在一组N个的数中找出第K个最大数
- 求最大的K个值
- 求数组中第k个最小数
- 求数组中第k个最小数
- 数组中找出第二个最大的元素(第k大的元素)
- 在一个无序数组中找到第K个最小或者最大的元素
- 寻找数组的第k个最大者
- ms 两个数组,从每个数组中取一个数相加,求最大的前k个和
- 求数组中第k大的数的位置
- 重学数据结构 链表增删
- [codevs1135]选择客栈
- js小练习:利用getElementsByTagName方法、for循环、this指针、数组实现对多个相同元素value值的改变
- EhCache注解使用
- 用Windows自带工具给U盘4k对齐
- 求数组中第K个最大的值
- 条款18:让接口容易被正确使用,不易被误用
- JavaScript标识符命名规则
- nyoj1115-士兵杀敌(二)(线段树单点更新,区间求和)
- CSS
- 第7周项目5 排队看病模拟
- 用两个栈来实现一个队列
- linux之在当前目录下删除不包含aa的文件
- Spring MVC的web.xml配置加解析