目录
冒泡排序算法:
重复地遍历要排序的元素,依次比较相邻两个元素,如果前一个比后一个大,就把它们两个调换位置,直到没有元素再需要交换,排序完成。这个算法的名字由来是因为越小(或越大)的元素会经由交换慢慢“浮”到数列的顶端。
package com.base.day14;
import java.util.Arrays;
/**
* @author: zjl
* @datetime: 2023/12/4
* @desc: 冒泡排序
*/
public class SortArrayNums {
public static void main(String[] args) {
int[] numArray = {16,25,9,90,23};
int temp;
//外层循环控制轮数
for(int i = 0;i < numArray.length-1;i++){
//内存循环控制每轮的次数
for(int j = 0; j < numArray.length-i-1;j++){
//交换位置
if(numArray[j] > numArray[j+1]){
temp = numArray[j];
numArray[j] = numArray[j+1];
numArray[j+1] = temp;
}
}
}
System.out.println(Arrays.toString(numArray));
}
}
选择排序
package com.base.day14;
import java.util.Arrays;
/**
* @author: zjl
* @datetime: 2023/12/4
* @desc: 选择排序
*/
public class SortArrayNumsChoice {
public static void main(String[] args) {
int[] numArray = {16,25,9,90,23};
int temp;
for(int i = 0;i< numArray.length-1;i++){
for (int j = i + 1;j < numArray.length;j++){
if(numArray[i] > numArray[j]){
temp = numArray[i];
numArray[i] = numArray[j];
numArray[j] = temp;
}
}
}
System.out.println(Arrays.toString(numArray));
}
}
二维数组
package com.base.day14;
import java.util.Scanner;
import static java.lang.System.in;
/**
* @author: zjl
* @datetime: 2023/12/4
* @desc:二维数组
*/
public class Student {
public static void main(String[] args) {
Scanner sc = new Scanner(in);
int classNum = 3;
int studentNum = 5;
int[][] scores = new int[classNum][studentNum];
for(int i = 0;i<scores.length;i++){
System.out.println("****第" + (i + 1) + "个班级****");
for (int j = 0;j<scores[i].length;j++) {
System.out.print("请输入该班级第" + (j + 1) + "个学生的成绩:");
scores[i][j] = sc.nextInt();
}
}
System.out.println("************成绩录入完毕************");
for(int i = 0;i<scores.length;i++){
int sum = 0;
for (int j = 0;j<scores[i].length;j++) {
sum += scores[i][j];
}
System.out.println((i + 1) + "班总成绩:" + sum);
}
}
}
二分查找法
package com.base.day14;
import java.util.Arrays;
/**
* @author: zjl
* @datetime: 2023/12/4
* @desc: 二分查找法
*/
public class BinarySearchTest {
public static void main(String[] args) {
int target = 24;//要查找的数字
int[] arr = {12,14,16,18,20,22,24,26,28,30};
Arrays.sort(arr);//先使用Arrays类给数组做一个默认的升序排序
int l = 0;//左边界
int r = arr.length - 1;//右边界
int m = -1;//中间的位置下标
boolean flag = false;
while(l <= r){
m = (l + r) >>> 1;//无符号右移一位,相当于除以2
if(arr[m] == target){
flag = true;
break;
} else if (arr[m] > target) {
r = m - 1;
}else {
l = m + 1;
}
}
if(flag){
System.out.println("数字" + target + "在数组中,下标为" + m);
}else {
System.out.println("数字" + target + "不在数组中");
}
}
}