java最大值函数_用java编写找最大值函数?

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

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

public class PrintUtil {

public static void print(int[] array){

for(int i=0;i

System.out.print(array[i] + " ");

}

System.out.println();

}

}

第一种:冒泡排序

public class BubblingSort {

/*

* 算法思想->升序

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

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

* 算法分析:

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

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

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

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

* 结论:O(n*n)阶

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

* 比较次数:n-1

* 交换次数:0

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

* 结论:O(n)阶

*/

public void bubbingSort(int[] array){

int len = array.length ;

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

boolean flag = false ;

for(int j=0;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 ;

}

System.out.print("第" + (5-i) + "趟的排序结果为:" );

PrintUtil.print(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();

ss.bubbingSort(array);

PrintUtil.print(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) = n*n+n-2

* 结论:O(n*n)阶

*/

public void insertSort(int[] array){

for (int i = 1; i < array.length; 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 ;

}

}

}

System.out.print("第" + i + "趟的排序结果为:" );

PrintUtil.print(array) ;

}

}

public static void main(String[] args) {

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

InsertSort ss = new InsertSort();

ss.insertSort(array);

PrintUtil.print(array) ;

}

}

第三种:选择排序

public class SelectSort {

/*

* 算法思想->升序

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

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

*

* 算法分析:

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

* 交换次数:3*(n-1)

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

* 结论:O(n*n)阶

*/

public void selectSort(int[] array){

int len = array.length ; //记录数组的长度

int scope = len ; //遍历范围

for(int i=0;i

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

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

for(int j=1;j

if(max < array[j]){

max = array[j] ;

index = j ;

}

}

int temp = array[scope-1] ;

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

array[index] = temp ;

System.out.print("第" + (i+1) + "趟的排序结果为:" );

PrintUtil.print(array) ;

scope -- ;

}

}

public static void main(String[] args) {

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

SelectSort ss = new SelectSort();

ss.selectSort(array);

PrintUtil.print(array) ;

}

}

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值