1.数组的动态扩容
1.1 图解
1.2 代码解释
import java.util.*;
class D1{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
//数组的动态扩容
//建立一个数组长度为零的数组
int[] arr=new int[0];
while(true){
//num用来接收数据
int num=scanner.nextInt();
//如果num==0则结束接收数据
if(num==0){
break;
}
//调用扩充函数,把数组长度加一
arr=kuoChong(arr,arr.length+1);
//把扩充数组后的空间放数据
arr[arr.length-1]=num;
}
}
public static int[] kuoChong(int[] arr,int newlen){
//建立一个新数组,只是长度为主函数长度加一
int[] arr1=new int[newlen];
//把原数组当中的数据赋值到新数组,且长度改变了
for(int i=0;i<arr.length;i++){
arr1[i]=arr[i];
}
//返回数组
return arr1;
}
}
2.选择排序
1.1 选择排序的图解
1.2 代码解释
import java.util.*;
class D1{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
//选择排序
//定义一个数组
int[] arr={12,3,2,5,6,7,8,9,1};
//始终让一个位置的数固定,与后面的数一次比较
for(int i=0;i<arr.length-1;i++){
//循环后面的数,与arr[i]比较
for(int j=i+1;j<arr.length;j++){
//实现升序的功能
if(arr[i]>arr[j]){
//当左边的数比右边大时,交换两个数
int temp;
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
//把数组转换成字符串输出
System.out.println(Arrays.toString(arr));
}
}
//[1, 2, 3, 5, 6, 7, 8, 9, 12]
3.冒泡排序
3.1 图解
3.2 代码
class D1{
public static void main(String[] args){
//冒泡排序
//定义一个数组
int[] arr={12,3,2,5,6,7,8,9,1};
//控制循环的次数
for(int i=0;i<arr.length;i++){
//创建两两比较时的下标
for(int j=0;j<arr.length-i-1;j++){
//实现升序的功能
if(arr[j]>arr[j+1]){
//交换两个数
int temp;
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
//把数组转换成字符串输出免得在一个一个遍历
System.out.println(Arrays.toString(arr));
}
}
//[1, 2, 3, 5, 6, 7, 8, 9, 12]
4.插入排序
4.1 图解
4.2 代码解释
import java.util.*;
class D1{
public static void main(String []args){
//定义一个数组
int[] arr={12,3,2,5,6,7,8,9,1};
//从数组的第二个开始比较
for(int i=1;i<arr.length;i++){
//把该处的值给e,让e保存
int e=arr[i];
//如果arr[i]的左边有数,且比arr[i]大,执行arr[j]=arr[j-1],到j>0
for(int j=i;j>0&&arr[j-1]>e;j--){
arr[j]=arr[j-1];
}
//在把arr[i]的值给arr[j]
arr[j]=e;
}
//把数组转换成字符串输出
System.out.println(Arrays.toString(arr));
}
}
//[1, 2, 3, 5, 6, 7, 8, 9, 12]
5.计数排序
5.1 图解
5.2 代码解释
public static void jiShu(int[] arr){
int min=arr[0],max=arr[0];
for(int i : arr){
if(i>max){
max=i;
}
if(i<min){
min=i;
}
}
int[] arr1=new int[max-min+1];
int offset=min;
for(int i=0;i<arr.length;i++){
arr1[arr[i]-offset]++;
}
int index=0;
for(int i=0;i<arr1.length;i++){
if(arr1[i]!=0){
for(int j=0;j<arr1[i];j++){
arr[index++]=i+offset;
}
}
}
System.out.println(Arrays.toString(arr));
}