java循环 排序 查找
一、循环、排序、查找基础练习
1.求1~100奇数和偶数的和
- 代码:
public class OddOrEvenSum {public static void main(String[] args) {int oddSum = 0; //奇数之和int evenSum = 0; //偶数之和for (int i = 1 ; i <= 100 ; i ++) {if (i % 2 == 1) {//判断奇数oddSum += i ;}else{ //不是奇数就是偶数evenSum += i;}}System.out.println("1~100之内奇数的和是: " + oddSum);System.out.println("1~100之内偶数的和是: " + evenSum);}
}
复制代码
- 运行结果:
2.求水仙花数
- 代码:
public class NarcNumber {public static void main(String[] args) {for (int i = 100 ; i <= 999 ; i ++ ) {int unit = i % 10; //个位数int decade= i / 10 % 10; //十位数int hundreds = i / 100; //百位数int sum = unit * unit * unit + decade * decade * decade + hundreds * hundreds * hundreds;if (sum == i) { //判断各个位数的立方和是否等于数的本身System.out.println(i); //打印水仙花数}}}
}
复制代码
- 运行结果:
3.打印26的大小写字母
- 代码:
public class PrintA_Z_a_z {public static void main(String[] args) {for (char a = 'a'; a <= 'z'; a ++) {System.out.print(a + " ");}System.out.println();for (char b = 'A'; b <= 'Z';b ++) {System.out.print(b + " ");}System.out.println();}
}
复制代码
- 运行结果:
4.打印9*9乘法表
- 代码:
public class MulList {public static void main(String[] args) {for (int i = 1;i <= 9; i ++) {for (int j = 1;j <= i; j ++) {System.out.print(j + " * " + i + " = " + j * i + " ");if (i * j < 10) { //多一个空格保证打印整齐System.out.print(" ");}}System.out.println();}}
}
复制代码
- 运行结果:
5.任意写一个数组,赋值,然后打印数组逆序后结果
- 代码:
public class ReversalArray {public static void main(String[] args) {int[] arr = {1,23,12,11,66,34};arrReversal(arr);arrPrint(arr);}public static void arrReversal(int[] arr) {for (int max = arr.length - 1 , min = 0;min <= max; min ++,max --) {int temp = arr[min];arr[min] = arr[max];arr[max] = temp;}}public static void arrPrint(int[] arr) {if (arr == null) {System.out.println("数组为空");return;}System.out.print("[");for (int i = 0 ; i < arr.length - 1; i ++) {System.out.print(arr[i] + ",");}System.out.println(arr[arr.length - 1] + "]");}
}
复制代码
- 运行结果:
6.练习排序算法
a.选择排序
- 代码:
public class SelectSort {public static void main(String[] args) {int[] arr = {9,12,3,4,13,6}; //静态初始化数组selectSort(arr); //调用选择排序方法arrPrint(arr); //调用打印数组方法}public static void selectSort(int[] arr) {for (int i = 0;i < arr.length - 1; i ++) {for (int j = i + 1 ; j < arr.length ; j ++) {if (arr[j] < arr[i]) { //如果前一个数比后一个数小则交换这两个数int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}}}public static void arrPrint(int[] arr) {System.out.print("[");for (int i = 0 ; i < arr.length-1 ; i ++) {System.out.print(arr[i] + ",");}System.out.println(arr[arr.length - 1] + "]"); }
}
复制代码
- 运行结果:
b.冒泡排序
- 代码:
public class BubbleSort {public static void main(String[] args) {int[] arr = {9,12,3,4,13,6};bubbleSort(arr);arrPrint(arr);}public static void bubbleSort(int[] arr) {for (int i = 0 ; i < arr.length - 1 ; i ++) {for (int j = 0 ; j < arr.length - 1 - i; j ++) {if (arr[j + 1] < arr[j]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}}public static void arrPrint(int[] arr) {if (arr == null) {System.out.println("数组为空");return;}System.out.print("[");for (int i = 0 ; i < arr.length - 1; i ++) {System.out.print(arr[i] + ",");}System.out.println(arr[arr.length - 1] + "]");}
}
复制代码
- 运行结果:
7.折半查找
- 代码:
public class BinarySearch {public static void main(String[] args) {int[] arr = {1,2,4,10,11}; //静态定义数组System.out.println(binarySearch(arr,4));}public static int binarySearch(int[] arr,int key) {int min = 0; //定义数组最小索引int max = arr.length - 1; //定义数组最大索引int mid = 0; //如果写成int mid = (min + max) / 2,mid变成一个常量while (min <= max) {mid = (min + max) / 2;if (key > arr[mid]) { //如果查找的值比中间的数大min = mid + 1; //将中间索引+1赋值给最小索引}else if (key < arr[mid]) { //如果查找的值比中间的数小max = mid - 1; //将中间索引-1赋值给最大索引}else{ //否则查找到了return mid; //返回中间索引号}}return -1; //循环后没有查询到指定的数,返回-1}
}
复制代码
- 运行结果:
二、拓展练习
1.按照25个一行从大到小的顺序打印所有四位整数中个位+十位=百位+千位的整数
(线索:循环(9999到1000)、计数器控制换行(计数器%5==0))
- 代码:
public class KiloEqual {public static void main(String[] args) {int count = 0; //定义一个计数器for (int i = 9999; i >= 1000; i --) { //反向遍历1000~9999int unit = i % 10; //个位数int decade = i / 10 % 10; //十位数int hundreds = i / 100 % 10; //百位数int kilo = i / 1000; //千位数if (unit + decade == hundreds + kilo) { //如果个位+十位=百位+千位System.out.print(i + " "); //打印出符合要求的数count ++; //计数器+1if (count % 25 == 0) { //每5行换行打印System.out.println();}}}}
}
复制代码
- 运行结果:
2.倒着打印九九乘法表
- 代码:
public class ReverseMulList {public static void main(String[] args) {for (int i = 1;i <= 9; i ++) {for (int j = 9;j >= i ; j --) {System.out.print(j + " * " + i + " = " + i * j + " ");if (i * j < 10) { //多一个空格保证打印整齐System.out.print(" ");}}System.out.println();}}
}
复制代码
- 运行结果:
3.分析以下需求,并用代码实现:(扩展)
(1)键盘录入6个int类型的数据存数数组arr中 (2)将arr数组中的内容反转 (3)将翻转后的数组角标为奇数的互相交换 1和3换, 3和5换,以此类推 例如: int[] arr={16,4,5,7,9,11} 反转:arr={11,9,7,5,4,16} 奇数的互相交换: arr={11,5,7,16,4,9}
- 代码:
import java.util.Scanner;
public class FancyArrayReverse {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int[] arr = new int[6]; //动态定义一个整型数组,有6个元素System.out.println("请输入6个数整数:");for (int i = 0 ; i < 6 ; i++) { //键盘录入6个整数System.out.println("第 " + (i + 1) + "个整数");arr[i] = sc.nextInt();}System.out.println("数组内容");arrPrint(arr); //打印数组System.out.println("反转数组");arrReverse(arr); //反转数组arrPrint(arr); //数组反转后打印System.out.println("花式反转数组");fancyArrayReverse(arr); //奇数索引的数进行反转arrPrint(arr); //花式反转后打印数组}public static void arrReverse(int[] arr) { //反转数组方法for (int min = 0,max = arr.length -1 ; min <= max ; min ++,max --) {int temp = arr[min];arr[min] = arr[max];arr[max] = temp;}}public static void fancyArrayReverse(int[] arr) { //花式反转数组方法for (int i = 1; i < arr.length - 2 ; i += 2 ) {int temp = arr[i];arr[i] = arr[i + 2];arr[i + 2] = temp;}}public static void arrPrint(int[] arr) { //打印数组方法if (arr == null) {System.out.println("数组为空");return;}System.out.print("[");for (int i = 0 ; i < arr.length - 1; i ++) {System.out.print(arr[i] + ",");}System.out.println(arr[arr.length - 1] + "]");}
}
复制代码
- 运行结果:
转载于:https://juejin.im/post/5a34e6bcf265da431523fb3c
java循环 排序 查找相关推荐
- 常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构)
常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构) 数据结构和算法作为程序员的基本功,一定得稳扎稳打的学习,我们常见的框架底层就是各类数据 ...
- Java集合排序及java集合类详解
Java集合排序及java集合类详解 (Collection, List, Set, Map) 摘要内容 集合是Java里面最常用的,也是最重要的一部分.能够用好集合和理解好集合对于做Java程序的开 ...
- java 用折半查找,java折半查找算法
//当 low>high 时表示查找区间为空,查找失败 } Java 代码: /** * 二分查找算法 * * @param srcArray 有序数组 * @param target 被查找的 ...
- (私人收藏)[开发必备]最全Java离线快速查找手册(可查询可学习,带实例)
https://pan.baidu.com/s/1L54VuFwCdKVnQGVc8vD1TQ nwmj java手册Java 入门教程含有1个附件,如下:java-HelloWorld.gifJav ...
- Java对象排序、中文排序、SortedSet排序使用和源码讲解
在C.C++中有很多排序算法,但是通常排序算法不得不让程序员在写代码的过程中陷入对底层很多指针和位置的理解,Java不希望这样,所以排序大多可以由java帮你做掉,例如,你要对一个数组排序,就通过:C ...
- Java常见排序算法之插入排序
一.概述 本节由小千给大家分享Java常见排序算法之插入排序,之前我们说过排序是算法中的一部分.所以我们学习排序也是算法的入门,为了能让大家感受到排序是算法的一部分,我举个例子证明一下:比如麻将游戏, ...
- Java有序表查找:折半查找、二分查找、差值查找和斐波那契查找
Java有序表查找:折半查找.二分查找.差值查找和斐波那契查找 [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/details/51 ...
- java从数组查找指定整数_如何在Java中使用重复项查找整数数组中的K个缺失数字?...
java从数组查找指定整数 自从我讨论任何编码或算法面试问题以来已经有很长时间了,因此我想重新考虑一种最流行的基于数组的编码问题,即在给定数组中查找缺失的数字. 在进行编程工作面试之前,您可能已经听说 ...
- java循环遍历类属性_java循环遍历类属性 get 和set值方法
//遍历sqspb类 成员为String类型 属性为空的全部替换为"/" Field[] fields = sqspb.getClass().getDeclaredFields() ...
最新文章
- 世界最大规模3D打印混凝土步行桥在上海 落成启用
- 2021年SDN和NFV的支出将超1580亿美元!
- iTerm2 的配置与美化
- C++ opengl GL_POLYGON的绘制
- android开源2016_Google 2016年开源版本浏览
- Hadoop HIVE 复合数据类型
- 【jQuery学习】—jQuery对象的过滤
- JSF通过EL读取List中的值
- 关于URL路径的基本使用
- 数学建模方法-多项式拟合
- mob AndroidStudio 短信SDK集成
- 苹果手机录屏软件_手机游戏录屏软件哪个好用 好用手机游戏录屏软件介绍
- nbu备份社区版mysql_mysql数据备份之NBU
- linux文件权限651,Linux基础之文件权限详解
- 国际植物基博览会2022年6月首次亮相上海;海瑞温斯顿珠宝王国在北京开设新零售沙龙 | 知消...
- 原来 Elasticsearch 还可以这么理解
- 星星之火-35:为什么傅里叶分析需要引入负频率以及负频率的物理意义是什么?
- Eclipes配置代码模糊匹配(部分匹配)
- 世坤投资大学:欲提供数据科学硕士学位的对冲基金
- 【Web开发】登录注册功能实现
热门文章
- 【解放日报】除了CEO首席执行官,你了解CIO吗?
- 【nowcoder-2017校招真题】保留最大的数
- reids和memcache的区别和一些常见的问题
- Windows系统下,使用Emacs+Putty操作远程机器
- 机器学习与R语言(原书第2版)》一1.4 实践中的机器学习
- iOS 怎么设置 UITabBarController 的第n个item为第一响应者?
- 计算区域中有t 个点的 区域有多少个+计算几何 + 叉乘+sort+ 二分 + map poj 2398 Toy Storage...
- [置顶] 火车票余票接口API使用方法
- 更新MYSQL生成日历表,支持跨年份 存储过程
- Expression Blend实例中文教程(13) - 控件模板快速入门ControlTemplates