大数据之JAVA基础(五):循环和数组方法练习

案例1:编写 1+3+5+7+......+99的值
/*
* 求1-99的基数和
*/
public static void fun01()
{
int i = 1;
int sum = 0;
for(;i<100;i+=2)
{
sum += i;
}
System.out.println("0-99基数和: "+ sum);
}


案例2:求所有的水仙花数( 100-999 之间,每位数字立方之和等于该 3 位数本身。如 153 = 1*1*1 + 3*3*3 + 5*5*5

/*
* 输出所有的水仙花数
*/
public static void func02()
{
for(int i = 100;i<1000;i++)
{
int bai = i / 100 % 10;
int shi = i / 10 % 10;
int ge = i % 10;
if(bai * bai *bai + shi *shi*shi + ge*ge*ge == i)
{
System.out.println(i);
}
}
}

案例3: 利用for循环打印26个大写26个小写英文字母

/*
* 打印大小写英文字母
*/
public static void func03()
{
//A-Z : 65 - 91
//a-z : 97 - 122
for(int i=97;i<123;i++)
{
if(i>='a' && i<='z' || i>= 'A' && i<='Z')
System.out.println((char)i);
}
}


案例4:打印99乘法表

/*
* 打印99乘法表
*/
public static void func04()
{
for (int i = 1; i <10; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j + "*" + i + " = " + i*j);
System.out.print(" ");
}
System.out.println();
}
}

案例5:编写数组的通用打印方法,例如打印(“【1,2,3,4,5】”)

/*
* 数组通用打印方法
*/
public static void func05(int [] arr)
{
System.out.print('[');
for (int i = 0; i < arr.length; i++) {
if(i == arr.length -1)
System.out.print(arr[i]);
else
System.out.print(arr[i] + ",");
}
System.out.print(']');
}

案例6:实现数组的逆序

/*
* 数组逆序
* 思想:首位和末位交换,然后首位 + 1,末位 -1 ,再次交换,以此类推,直到首位大于或者等于末位
*/
public static void func06(int [] arr)
{
int start = 0; // 开始索引
int end = arr.length - 1; //末尾索引
for(start = 0 ; start <= end ; start ++,end--)
{
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
}
for (int i : arr) {
System.out.println(i);
}
}


案例7:数组的冒泡排序

/*
* 数组的冒泡排序(从小到大)
* 思想:外层i从0位置开始,内层j从其后一位(i+1)开始,比较(arr.length - 1 - i)次,进行比较和交换
*
*/
public static void func07(int [] arr)
{
for (int i = 0; i < arr.length - 1; i++) {
for(int j = i + 1; j < arr.length - 1 - i ; j ++)
{
if(arr[i] > arr[j] )
{
int temp = arr[i];
arr[i] = arr[j];
arr[j] =temp;
}
}
}
for (int i : arr) {
System.out.println(i);
}
}


案例8:有序数组的折半查找

/*
* 有序数组的折半查找
*/
public static int func08(int [] arr,int search)
{
int min = 0; //最小索引
int max = arr.length - 1; //最大索引
int mid = (max + min) /2; //折半
while(arr[mid] != search)
{
if(arr[mid] > search)
{
max = mid - 1;
}
else
{
min = mid + 1;
}
mid = (max + min) /2; //折半
if(min > max)
{
return -1;
}
}
return mid;
}



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值