排序与循环

AK47
两种排序的介绍
首先声明外层循环我们用的变量是i,内层循环我们用的是j,本次排序的数组是int[] arr = new arr[]{5,2,9,8,7,10,4,3}

冒泡排序

冒泡用到两层循环,外层循环是控制趟数的
就上面的例子来说8个数字,共循环7趟.因为每一趟循环将会确定一个数字的准确位置.所以最后一个数字不用比较就确定了.
内层循环 arr[j]和arr[j+1]比较如果
arr[j]>arr[j+1] 则交换他们俩的值,直到j不满足条件,则退出循环,到第一层循环中,开始第二轮外层循环,上一轮已经确定了一个最大值,
所以这次比较到最大值的前一个就行了.下面是代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public static void bubble(int[] arr)
{
//外层循环:数组的长度是8,i<8-1,i的值从0到6总共为7,
// 比元素的数量少1
for(int i=0;i<arr.length-1;i++) {
// 内层循环:因为外层循环进行一次,那么就确定一个数的顺序,
// 所以j的限定条件这么写.
for(int j=0;j<arr.length-i-1;j++){
if(arr[j]>arr[j+1])
{
// 这里是实打实的进行数据的交换,
// 每符合条件就变动一次数组
int temp = arr[j];
arr[j] =arr[j+1];
arr[j+1]=temp;
}
}
}
System.out.println("用冒泡排序排完后的结果为:");
}

bubble

选择排序

选择排序也用到两层循环,和冒泡一样外层循环也是控制趟数的
因为选择排序也是每一次内循环确定一个数的位置,所以,外层循环趟数还是比元素数少1
内层循环,这个是假定一个元素(设他的下标为m)是最小,一般将m设置为当前外层循环(i)的值,然后在进行arr[m]>arr[j]比较,
满足条件将j的值赋给m(这里注意只是将下标赋值,而不是交换数据)
直到j自增到不满足条件后,j自增到不满足条件后,说明第一轮外层循环已经结束,
此时if(i!=m)下面进行数据的交换,交换完成后,进行下一轮的排序.具体看下面代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public static void select(int[] arr)
{
// 外层循环:数组的长度是8,i<8-1,
// i的值从0到6总共为7,比元素的数量少1
for(int i=0;i<arr.length-1;i++) {
// 这里定义m为i,就是我们假定的最小值或者最大值的下标
int m=i;
// 前面已经假定了最大最小值的下标,这里用他后面的数据来
// 和他比较,所以j在(i+1)之后的下标都要取到。
for(int j=i+1;j<arr.length;j++) {
// 判断他们两个值的大小,满足条件,将下标赋值给m
if(arr[j]>arr[m])
{
m=j;
}
}
// 这里是判断,新的m下标和之前的的i是否一样,一样的话就不
// 用交换数据了,其实这一步,不加亦可以达成目的.
if(i!=m)
{
int temp=arr[i];
arr[i]=arr[m];
arr[m]=temp;
}
}
System.out.println("用选择排序排完后的结果为:");
}

选择排序

杨辉三角

这个杨辉三角的实现用的是递归的方法.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public void yangHui(int n)
{

for(int i=1;i<=n;i++)
{
for(int j=1;j<=i;j++)
{
System.out.print(getNumber(i,j)+"\t");
}
System.out.println();
}
}
// 递归的方法
public int getNumber(int i,int j)
{
if(i==j||j==1)
{
return 1;
}else
{
return getNumber(i-1,j-1)+getNumber(i-1,j);
}
}

杨辉三角

双层for循环实现任意进制乘法表

我们这里演示的是七七乘法表

1
2
3
4
5
6
7
8
9
10
public static void muTtable(int n)
{
for(int i=1;i<=n;i++) {
for(int j=1;j<=i;j++)
{
System.out.print(j+"x"+i+"="+(i*j)+"\t");
}
System.out.println();
}
}

乘法表

shutdown

咦~~~~ 这是嘛呀!!!
0%