
你好,好多种办法。我给你写几种经典的排序吧,最大值就在第一个(倒序)或者最后一个(从小到大)。
首先方便输出,定义一个工具类
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求最大值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)