美文网首页
算法与结构---选择问题

算法与结构---选择问题

作者: A顶风少年 | 来源:发表于2018-10-02 00:10 被阅读14次

package 第一章;

public class 选择问题 {

/* 问题:设有一组N个数而要确定其中第K个最大者,我们称之为选择问题(selection problem) */

public static void main(String[] args) {

// 给定数组

int array[] = { 5491, 6897, 5892, 395, 3347, 2846, 2094, 5300, 7878, 3109 };

System.out.println(method1(array, 4));

// System.out.println(method2(array, 4));

}

/*

* 方法1: 将这N个数读入一个数组中,在通过某种简单算法,比如冒泡排序,异递减顺序将数组排序,然后返回 K上的元素

*/

public static int method1(int[] array, int k) {

// 排序后: 7878,6897,5892,5491,5300,3347,3109,2846,2094,395

sort(array);

return array[k - 1];

}

/*

* 方法2:将前K个元素读入数组(已递减顺序)对其进行排序.接着,将剩下的元素在逐个读入.当新元素被读取时,如果小于数组中的

* 第四个元素则忽略,否则就将其当道数组中正确的位置.同时将数组中的一个元素移除数组,终止时返回第K个元素

*/

public static int method2(int[] array, int k) {

// 排序后: 7878,6897,5892,5491,5300,3347,3109,2846,2094,395

// 存储K个元素的数组

int nArray[] = new int[k];

// 添加元素

for (int i = 0; i < k; i++) {

nArray[i] = array[i];

}

// 对数组排序

sort(nArray);

for (int i = k - 1; i < array.length; i++) {

// 如果当前元素没有最后一个大忽略

if (array[i] < nArray[k - 1]) {

continue;

}

// 创建一个存储K+1个元素的数组,用来放新的较大的值

int[] kArray = new int[k + 1];

// 给新数组赋值

for (int y = 0; y < nArray.length; y++) {

kArray[y] = nArray[y];

}

// 新数组最后一个元素为较大值

kArray[kArray.length - 1] = array[i];

// 对新数组排序

sort(kArray);

// 将新数组的前K个元素赋值给老数组

for (int x = 0; x < nArray.length; x++) {

nArray[x] = kArray[x];

}

}

return nArray[k - 1];

}

// 方法3在第二章中讲解

public static int method3(int array[], int k) {

return 0;

}

// 对数组进行排序

public static int[] sort(int[] array) {

for (int x = 0; x < array.length - 1; x++) {

for (int y = x + 1; y < array.length; y++) {

if (array[x] < array[y]) {

int item;

item = array[x];

array[x] = array[y];

array[y] = item;

}

}

}

return array;

}

}

相关文章

  • 算法与结构---选择问题

    package 第一章; public class 选择问题 { /* 问题:设有一组N个数而要确定其中第K个最大...

  • 如何理解数据结构与算法?

    一、数据结构与算法介绍 1、程序=结构+算法 程序由存储数据的结构和解决问题的算法组成,在计算机的世界里,结构和算...

  • 数据结构与算法 - 查找

    数据结构与算法系列文章数据结构与算法 - 时间复杂度数据结构与算法 - 线性表数据结构与算法 - 树形结构数据结构...

  • 数据结构与算法

    概述 程序 = 数据结构 + 算法,数据结构和算法与语言无关,数据结构是管理和存储数据的方法,算法是解决问题的方法...

  • 数据结构与算法 - 树形结构

    数据结构与算法系列文章数据结构与算法 - 时间复杂度数据结构与算法 - 线性表数据结构与算法 - 树形结构 目录 ...

  • 数据结构与算法之选择问题

    问题描述 设有一组大小为N的数据,我们要选出其中第K个最大值,对于此类问题,可以由以下两种方法实现。 算法实现: ...

  • 思维导图之数据结构+算法

    数据结构+算法 = 程序 数据结构比较 参考文章 数据结构与算法数据结构与算法(java)

  • 算法与数据结构(1),List

    算法与数据结构(1),List 算法与数据结构(2),Map 算法与数据结构(3),并发结构 习惯了,深夜更新博客...

  • 02数据结构与算法复杂度分析上

    数据结构与算法之美专栏笔记 1. 为什么要学习数据结构和算法 数据结构和算法本身解决的是“快”和“省”的问题,让代...

  • 算法与数据结构(3),并发结构

    算法与数据结构(1),List 算法与数据结构(2),Map 算法与数据结构(3),并发结构 本来已经合上电脑了,...

网友评论

      本文标题:算法与结构---选择问题

      本文链接:https://www.haomeiwen.com/subject/wldooftx.html