关于Java中数组和各类循环问题的代码解法汇总

关于Java中数组和各类循环问题的代码解法汇总

/*数组打印的方式
public static void main(String[] args){
String str=new String(“hello”);
char[]chs={‘w’,‘o’,‘r’,‘l’,‘d’};
change(str,chs);
System.out.println(str+" "+new String(chs));//hello world

	StringBuffer sb=new StringBuffer ("hello");
	change(sb);
	System.out.println(sb);//helloworld
}
public static void change(StringBuffer sb){
	sb.append("world");
}
public static void change(String str,char[]chs){
	str.replace('h','h');
	chs[0]='w';
}*/
/*数组拷贝的方式
public static void copyArray(int[] array1,int[] array2){
	for (int i = 0;i < array.length;i++){
		array2[i] = array[i];
	}
}
public static void main(String[] args){
	int[] array1 = {1,2,3,4,5};
	int[] array2 = new int[array1.length];
	System.out.println(toString(array2));
	copyArray(array1,array2);
	System.out.println(toString(array2));
}*/

//将偶数放到奇数前面。
/*
public static void func(int[] array){//需要导入包
	int i = 0;
	int j = array.length-1;
	while(i != j){
		while(i < j && array[i]%2 == 0){//遇到奇数停止
			i++;
		}
		while(i < j && array[j]%2 != 0){//遇到偶数停止
			j--;
		}
		if(i != j){
			int tmp=array[i];
			array[i]=array[j];
			array[j]=tmp;
		}
	}
	
}
public static void main(String[] args){//注意大写
	int[] array = {1,2,3,4,5,6,7,8,9};//新变量需要int
	func(array);
	System.out.print(Arrays.toString(array));//以字符串形式打印数组
}
public static int binarySearch(int[] array,int key){//使用二进制搜索算法搜索指定值的指定字节数组
	int left =0;
	int right=array.length-1;
	while(left<=right){
		int mid = (left+right)/2;
		if(array[mid] == key){
			return mid;
		}else if(array[mid] > key){
			right = mid -1;
		}else{
			left = mid +1;
		}
	}
	return -1;
}
public static void main(String[] args){
	int[] array = {1,2,3,4,5,6,7,8,9};//注意[]的增加
	System.out.println(binarySearch(array,8));//key:8,写入需查找的关键数值key
}*/



//水仙花数打印
/*
public static void waterFlower(int n){
	
	for (int i = 0;i <= n;i++){
		int sum = 0;
		int count = 0;
		int tmp = i;
		while(tmp != 0){
			tmp=tmp/10;
			count++;
		}
		tmp = i;
		while(tmp != 0){
			sum = sum + (int)Math.pow(tmp%10,count);
			tmp = tmp/10;
		}
		if(sum == i){
			System.out.println(i);
		}
	}
	
}

//设置密码,三次验证输入的程序代码
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();

	waterFlower(n);
}

public static void guess(){
	Scanner scanner = new Scanner(System.in);
	int count = 3;
	while(count != 0){
		System.out.print("请输入你的密码");
		String password =scanner.nextLine();
		//if(password == "abcde"){(不能用相等,应该用equal来匹配)
		if("abcde".equals(password)){
			System.out.println("登陆成功");
			break;
		}else{
			count--;
			System.out.println("你还有"+count+"次机会!");
		}
	}
}
public static void main(String[] args){
	guess();     
}*/	

///冒泡排序方法对数组进行排序
public static void bubbleSort(int[] array){
for(int i = 0;i < array.length-1;i++){
for(int j = 0;j < array.length-1-i;j++){
if(array[j]>array[j+1]){
int tmp = array[j];
array[j] = array[j+1];
array[j+1] = tmp;
}
}
}
}
public static void main(String[] args){
int[] array = {21,32,4,56,78,9,7,56,23};
System.out.println(Arrays.toString(array));
bubbleSort(array);
System.out.println(Arrays.toString(array));
}
//快速排序方法对数组进行排序
public static void main(String[] args){
int[] array = {21,32,4,56,78,9,7,56,23};
System.out.println(Arrays.toString(array));
Arrays.sort(array);
System.out.println(Arrays.toString(array));
}
/

//冒泡排序方法对数组进行排序【进阶版】
public static void bubbleSort(int[] array) {

    boolean flg = false;
    //趟数
    for (int i = 0; i < array.length-1; i++) {
        flg = false;
        //每一趟的次数
        for (int j = 0; j < array.length-1-i; j++) {
            if(array[j] > array[j+1]) {
                int tmp = array[j];
                array[j] = array[j+1];
                array[j+1] = tmp;
                flg = true;
            }
        }
		System.out.println(Arrays.toString(array));
        //if(flg = false) {
        if(!flg) \
            break;
        }
    }
}
public static void main(String[] args) {
    //Arrays工具类当中的方法演示

    int[] array = {1,2,3,4,5,6};
	bubbleSort(array);
    System.out.println(Arrays.toString(array));
}
最小循环数组是指在一个循环数组中,找到一个连续子数组,使该子数组的和最小。对于解决这个问题,可以使用Java编程语言来实现。 首先,我们需要定义一个函数来计算数组的和。该函数的输入参数为一个整数数组,返回值为数组的总和。下面是该函数的Java代码实现: ```java public int getSum(int[] nums) { int sum = 0; for (int num : nums) { sum += num; } return sum; } ``` 接下来,我们可以编写一个函数来找到最小循环数组的和。该函数的输入参数为一个整数数组,返回值为最小循环数组的和。下面是该函数的Java代码实现: ```java public int findMinSubarraySum(int[] nums) { int sum = getSum(nums); int currentSum = 0; int minSum = sum; for (int i = 0; i < nums.length; i++) { currentSum += nums[i]; if (currentSum > sum) { currentSum = nums[i]; } minSum = Math.min(minSum, currentSum); } return minSum; } ``` 在这段代码,我们使用了一个变量currentSum来记录当前子数组的和,另一个变量minSum来记录最小循环数组的和。在遍历数组过程,如果当前子数组的和大于整个数组的总和,就将currentSum重置为当前元素的值。每次更新minSum时,都使用Math.min函数来比较两个和的大小,并将较小的值赋给minSum。 最后,我们可以调用findMinSubarraySum函数来找到最小循环数组的和。下面是一个例子: ```java int[] nums = {4, 3, -2, -1, -3, 4, 5}; int minSubarraySum = findMinSubarraySum(nums); System.out.println("最小循环数组的和为:" + minSubarraySum); ``` 以上就是最小循环数组问题Java解法,通过以上的代码实现,可以计算出最小循环数组的和。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值