为什么双层循环 冒泡排序_玩转双层嵌套的for循环

1,先是一个简单的“金子”塔的打印

首先确认你要打印几行米字键外循环控制行数,之后先打印空格,再打印米字键通过for循环来确认打印的次数,最后比忘记换行,在打印好*键后进行换行

这里使用了高中学的数列的知识

“金子”塔的打印代码:

package com.lishuai.fuxi.www;

public class Demo {

public static void main(String[] args) {

print();

}

private static void print() {

// TODO Auto-generated method stub

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

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

System.out.print(" ");

}

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

System.out.print("* ");

}

System.out.println();

}

}

}

2,使用冒泡,选择排序来排序数组里的数字

首先了解一下数组的定义方式

数组的定义:

int[] arr=new int[]{自定义数}; int[] arr={自定义数};

int[] arr=new int[数字];

冒泡排序无论从大到小,还是从小到大,都是两个数比较,然后交换,每一次循环选出一个最小(大)数排在右边,每一次循环后到下一次循环都会少选一次。

因此内层循环的右区间要注意变化规律

冒泡排序从小到大代码:

public class Demo {

public static void main(String[] args) {

int[] arr = new int[] { 10, 51, 48, 45, 21, 34, 51 };

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

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

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

int temp = arr[j];

arr[j] = arr[j + 1];

arr[j + 1] = temp;

}

}

}

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

System.out.println(arr[i]);

}

}

}

选择排序是将第一个数与其它一组数据进行比较找到最小(大)值,然后替换,之后第二个数一直循环下去,其实就是将无序的数组,从左往右进行排序,所以要注意内层循环中初始值的变化规律。

选择排序代码:

public class Demo2 {

public static void main(String[] args) {

// TODO Auto-generated method stub

int[] arr = new int[] { 12, 14, 8, 6, 34, 25 };

for (int i = 0; i <= arr.length - 1; i++) {

for (int j = i + 1; j < arr.length - 1; j++) {

if (arr[i] > arr[j]) {

int temp = arr[j];

arr[j] = arr[i];

arr[i] = temp;

}

}

}

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

System.out.println(arr[i]);

}

}

}

3,杨辉三角代码实现:

package com.lishuai.fuxi.www;

public class for2Tast {

public static void main(String[] args) {

int a=10;

int arr[][];

arr=new int[a][];

//为一维数组定义长度

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

arr[i - 1] = new int[i];

}

//根据杨辉三角的特点为二维数组赋值

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

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

if(i==j||i==0||j==0){

arr[i][j]=1;

continue;

}else{

arr[i][j]=arr[i-1][j-1]+arr[i-1][j];

}

}

}

//赋值后进行打印

for (int m = 0; m < 10; m++) {

for (int n = 0; n <= m; n++) {

System.out.print(arr[m][n] + " ");// 循环输出

}

System.out.println(" ");

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值