1、将五个无序:24,69,80,57,13 使用冒泡排序法将其排成一个从小到大的有序数列。
public class BubbleSort {
public static void main(String[] args) {
int temp = 0;
int[] arr = new int[]{24,69,80,57,13};
for (int i = 0; i < arr.length; i++) {
for(int j = 0;j < arr.length-1-i;j++){
if(arr[j] > arr[j+1]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
}
2、有一个数列:白眉鹰王、金毛狮王、紫衫龙王、青翼蝠王猜数游戏:从键盘中任意输入一个名称,判断数列中是否包含此名称【顺序查找】
要求: 如果找到了,就提示找到,并给出下标值
public class SeqSearch {
public static void main(String[] args) {
//创建字符串数组
String[] names = new String[]{"白眉鹰王","金毛狮王","紫衫龙王","青翼蝠王"};
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你要查找的名称:");
String findName = scanner.next();
int index = -1;
//比较 字符串比较 equals, 如果要找到名字就是当前元素
for (int i = 0; i < names.length; i++) {
if (names[i].equals(findName)) {//找到了
System.out.println("找到了:" + findName);
System.out.println("下标为: " + i);
//把 i 保存到 index
index = i;
break;
}
}
if(index == -1){//没找到
System.out.println("Sorry,没有找到:" + findName);
}
}
}
3、请对一个有序数组进行二分查找 {1,8, 10, 89, 1000, 1234} , 输入一个数看看该数组是否存在此数,并且求出下标,如果没有就提示"没有这个数"。
public class SeqSearchExer {
public static void main(String[] args) {
//创建一个新的整数数组
int[] arr = new int[]{1,8, 10, 89, 1000, 1234};
int left = 0;
int right = arr.length-1;
int mid;
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你要查找的数字: " );
int findNum = scanner.nextInt();
while(left <= right){
mid = (left + right)/2;
if(findNum == arr[mid]){
System.out.println("找到了数字: " + findNum);
System.out.println("下标为: " + mid);
return;
} else if (findNum > arr[mid]){
left=mid+1;
}else{
right=mid-1;
}
}
}
}
4、请用二维数组输出如下图形
0 0 0 0 0 0
0 0 1 0 0 0
0 2 0 3 0 0
0 0 0 0 0 0
public class TwoDimensionalArray01 {
public static void main(String[] args) {
int[][] arr = new int[][]{{0,0,0,0,0,0},{0,0,1,0,0,0},{0,2,0,3,0,0},{0,0,0,0,0,0}};
for(int i = 0;i < arr.length;i++){
for(int j = 0;j < arr[i].length;j++){
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
}
}
5、看一个需求:动态创建下面二维数组,并输出
1
2 2
3 3 3
public class TwoDimensionalArray03 {
public static void main(String[] args) {
//创建 二维数组,一个有 3 个一维数组,但是每个一维数组还没有开数据空间
int[][] arr = new int[3][];
for(int i = 0;i < arr.length;i++){
//给每个一维数组开空间 new
//如果没有给一维数组 new ,那么 arr[i]就是 null
arr[i] = new int[i+1];
//遍历一维数组,并给一维数组的每个元素赋值
for(int j = 0;j < arr[i].length;j++){
arr[i][j] = i+1;
}
}
System.out.println("====遍历并输出arr数组元素=======");
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j] + " ");
}
System.out.println();//换行
}
}
}
6、int arr[][]={{4,6},{1,4,5,7},{-2}}; 遍历该二维数组,并得到和
public class TwoDimensionalArray04 {
public static void main(String[] args) {
int arr[][]={{4,6},{1,4,5,7},{-2}};
int sum = 0;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
sum += arr[i][j];
}
}
System.out.println("sum = " + sum);
}
}
7、使用二维数组打印一个 10 行杨辉三角
public class YangHui {
public static void main(String[] args) {
/*
使用二维数组打印一个 10 行杨辉三角
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
...
规律
1.第一行有 1 个元素, 第 n 行有 n 个元素
2. 每一行的第一个元素和最后一个元素都是 1
3. 从第三行开始, 对于非第一个元素和最后一个元素的元素的值. arr[i][j]
arr[i][j] = arr[i-1][j] + arr[i-1][j-1]; //必须找到这个规律
*/
int[][] arr = new int[10][];
for (int i = 0; i < arr.length; i++) {
arr[i] = new int[i+1];
for (int j = 0; j < arr[i].length; j++) {
if(j == 0 || j == arr[i].length-1){
arr[i][j] = 1;
}else{
arr[i][j] = arr[i-1][j] + arr[i-1][j-1];
}
}
}
System.out.println("====遍历杨辉数组=====");
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j] + " ");
}
System.out.println();//换行
}
}
}