用java编写找最大值函数

用java编写找最大值函数,第1张

你好,好多种办法。我给你写几种经典的排序吧,最大值就在第一个(倒序)或者最后一个(从小到大)。

首先方便输出,定义一个工具类

public class PrintUtil {

public static void print(int[] array){

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

Systemoutprint(array[i] + " ");

}

Systemoutprintln();

}

}

第一种:冒泡排序

public class BubblingSort {

/

算法思想->升序

1、比较相邻两项,若为逆序,则交换

2、每次比较的结果就是将最大项浮到数组尾

算法分析:

------- 最坏情况 --------

比较次数:(n-1) + (n-2) + + 1 = n(n-1)/2

交换次数:[(n-1) + (n-2) + + 1]3 = 3n(n-1)/2

所以n元选择排序需要的主要 *** 作次数是:n(n-1)/2+3n(n-1)/2=2nn-2n

结论:O(nn)阶

------- 最好情况 --------

比较次数:n-1

交换次数:0

所以n元选择排序需要的主要 *** 作次数是:n-1

结论:O(n)阶

/

public void bubbingSort(int[] array){

int len = arraylength ;

for(int i=len-1;i>0;i--){

boolean flag = false ;

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

if(array[j]>array[j+1]){

int temp = array[j] ;

array[j] = array[j+1] ;

array[j+1] = temp ;

flag = true ;

}

}

if(!flag){

break ;

}

Systemoutprint("第" + (5-i) + "趟的排序结果为:" );

PrintUtilprint(array) ;

}

}

public static void main(String[] args) {

int[] array = {29,10,14,37,13} ;

// int[] array = {37,29,14,13,10} ; //最差情况

// int[] array = {10,13,14,29,37} ; //最好情况

BubblingSort ss = new BubblingSort();

ssbubbingSort(array);

PrintUtilprint(array) ;

}

}

第二种:插入排序

public class InsertSort {

/

算法思想->升序

1、将一个数组的元素分成两部分,前半部分为有序数组

2、每一次取后半部分的第一个元素,将该元素插入到有序数组中

算法分析:

------- 最坏情况 --------

比较次数:1 + 2 + + (n-1) = n(n-1)/2

移动次数:

内部循环:1 + 2 + + (n-1) = n(n-1)/2

外部循环:2(n-1) OR 2

所以n元选择排序需要的主要 *** 作次数是:n(n-1)/2 + n(n-1)/2 + 2(n-1) = nn+n-2

结论:O(nn)阶

/

public void insertSort(int[] array){

for (int i = 1; i < arraylength; i++) {

int temp = array[i] ;

for(int j= i-1; j >= 0; j--){

if(temp > array[j])

break ;

if(temp < array[j]){

array[j+1] = array[j] ;

if( j != 0 && temp > array[j-1]){

array[j] = temp ;

break ;

}

if(j == 0){

array[0] = temp ;

}

}

}

Systemoutprint("第" + i + "趟的排序结果为:" );

PrintUtilprint(array) ;

}

}

public static void main(String[] args) {

int[] array = {29,10,14,37,13} ;

InsertSort ss = new InsertSort();

ssinsertSort(array);

PrintUtilprint(array) ;

}

}

第三种:选择排序

public class SelectSort {

/

算法思想->升序

1、找到最大的元素,与最后一个元素交换

2、除去最后一个元素外,在数组的剩余项中查找最大项,并与倒数第二个元素交换

算法分析:

比较次数:n(n-1)/2

交换次数:3(n-1)

所以n元选择排序需要的主要 *** 作次数是:n(n-1)/2+3(n-1)=nn/2+5n-3

结论:O(nn)阶

/

public void selectSort(int[] array){

int len = arraylength ; //记录数组的长度

int scope = len ; //遍历范围

for(int i=0;i<len-1;i++){

int max = array[0] ; //数组的最大元素

int index = 0 ; //记录最大元素的下标

for(int j=1;j<scope;j++){

if(max < array[j]){

max = array[j] ;

index = j ;

}

}

int temp = array[scope-1] ;

array[scope-1] = array[index] ;

array[index] = temp ;

Systemoutprint("第" + (i+1) + "趟的排序结果为:" );

PrintUtilprint(array) ;

scope -- ;

}

}

public static void main(String[] args) {

int[] array = {29,10,14,37,13} ;

SelectSort ss = new SelectSort();

ssselectSort(array);

PrintUtilprint(array) ;

}

}

其余的都比较复杂就不给你多写了。

其实很简单的算法,就是遍历这N个数,没遇到一个大的值,就去赋给max,最后输出max,但是这个没什么技术含量,所以在最后说明下。

public class B {

public static void main(String[] args) {

int[] array = {10,29,18,30,43,69};

int max = 0;//初始最大值

//遍历循环数组

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

if(maxIndex < array[i]){

maxIndex = array[i];

}

}

Systemoutprintln("最大值:"+max);

}

}

如有帮助请采纳(不懂请提问),可以看我主页,欢迎来交流学习;

测试结果为

请输入第1个数

2

请输入第2个数

3

请输入第3个数

4

请输入第4个数

5

请输入第5个数

6

请输入第6个数

7

请输入第7个数

7

请输入第8个数

8

请输入第9个数

9

请输入第10个数

423

最大数为:423

import javautilScanner;

public class MaxNum {

/

@param args

/

public static void main(String[] args) {

// TODO Auto-generated method stub

Scanner in = new Scanner(Systemin);

int max = IntegerMIN_VALUE;

for(int i = 1; i <= 10; i++) {

Systemoutprintln("请输入第" + i + "个数");

int num = innextInt();

if(num >= max) max = num;

}

Systemoutprintln("最大数为:" + max);

}

}

以上就是关于用java编写找最大值函数全部的内容,包括:用java编写找最大值函数、java求数组的最大值、如何用java求最大值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/9318226.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存