1.数组的逆序存储
Random ran = new Random();
int[] arr = new int[10];
System.out.println("逆序前:");
for(int i = 0;i < arr.length; i++){
System.out.print(arr[i] + " ");
}
System.out.println();
System.out.println("逆序后:");
for(int i = 0;i < arr.length/2; i++){
int t = arr[i];
arr[i] = arr[arr.length-1-i];
arr[arr.length-1-i] = t;
}
for(int i = 0;i < arr.length; i++){
System.out.print(arr[i]+" ");
}
首先导入了Random
类,并在main
方法中创建了一个Random
对象ran
来生成随机数。
然后,创建了一个长度为10的int数组arr
来存储随机数。
接下来,使用for循环遍历数组arr
,并使用ran.nextInt(100)
生成一个范围在0到99之间的随机整数来赋值给数组元素arr[i]。这样,数组arr
就被随机初始化了。
然后,使用for循环输出数组arr
的初始顺序。
然后,使用for循环进行数组的逆序排列。这里遍历的次数是数组长度的一半,并且使用临时变量t
来存储交换过程中的临时值。将当前元素arr[i]与对称位置的元素arr[arr.length-1-i]进行交换。
最后,再次使用for循环输出逆序排列后的数组arr
。
这样,代码就实现了将数组逆序排列的功能。输出结果中首先会有一个逆序前的数组顺序,然后是逆序后的数组顺序。
2.数组中插入元素后仍有序
思路: * 开辟一个新位置int place = 0 * 使用for循环遍历数组,寻找插入点。这一步骤通过比较要插入的数值num与数组中的元素, * 寻找第一个大于等于num的元素位置place,作为插入点。 * 如果所有元素都小于num,则插入点为数组末尾。 * 从数组末尾开始,直到找到的插入点place,将每个元素向后移动一位。这样做是为了空出插入点的位置。 * 在找到的插入点place处插入用户输入的数值num。
Random ran = new Random();
int[] arr = new int[10];
for(int i = 0;i < arr.length; i++){
System.out.print(arr[i] + " ");
}
System.out.println();
System.out.println("输入插入的位置:");
int num = new Scanner(System.in).nextInt();
int place = 0;
for(place = 0;place < arr.length - 1;place++){
if(num<arr[place]){
break;
}
}
for (int i = arr.length-2 ;i >= place ; i--) {
arr[i+1] = arr[i];
}
arr[place] = num;
for (int i = 1; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
代码首先导入了Random
类,并创建了一个Random
对象ran
来生成随机数。
然后,创建了一个长度为10的int数组arr
来存储数字。
接下来,使用for循环输出数组arr
的初始内容,由于数组初始化为0,所以输出的结果都为0。
然后,通过输入的方式获取一个需要插入的数字num
。
使用for循环遍历数组arr
,并通过比较找到插入位置place
,当找到第一个大于num
的元素时,终止循环。
接下来,使用for循环将插入位置以及之后的元素依次向后移动一位,为插入num
做准备。
然后,将num
插入到place
位置。
最后,使用for循环输出插入后的数组,并没有输出第一个位置的元素。
这样,代码就实现了插入一个输入的数字到数组的指定位置,并输出插入后的数组。
3.冒泡排序(很重要)
Random ran = new Random();
int[] arr = new int[10];
for(int i = 0;i < arr.length; i++){
System.out.print(arr[i] + " ");
}
System.out.println();
for(int i = 0; i < arr.length - 1; i++){
for(int j = 0;j < arr.length - 1 - i;j++){
if(arr[j] > arr[j+1]){
arr[j] ^= arr[j+1];
arr[j+1] ^= arr[j];
arr[j] ^= arr[j+1];
}
}
System.out.print(arr[i]+" ");
}
代码首先导入了Random
类,并创建了一个Random
对象ran
来生成随机数。
然后,创建了一个长度为10的int数组arr
来存储数字。
使用for循环输出数组arr
的初始内容,由于数组初始化为0,所以输出的结果都为0。
接下来,使用两层for循环嵌套进行冒泡排序。外层循环控制比较的轮数,内层循环控制每一轮比较的次数。
在内层循环中,通过比较相邻元素的大小,如果前一个元素大于后一个元素,则交换它们的位置。
交换元素的操作使用了异或运算的特性,可以避免使用额外的变量进行交换。
每一轮比较结束后,最大的元素都会被移动到当前的最后位置。
最后,使用for循环输出排序后的数组,由于已经进行了arr.length - 1轮比较,所以最后一个元素已经是最大的,不需要再输出。
这样,代码就实现了对一个初始为空的数组进行冒泡排序,并输出排序后的数组。
4.杨辉三角
杨辉三角 * 思路:先将腰上的边输出[i][0]=1,[i][i]=1 * 从第2行开始,[i-1][j-1]+[i-1][j];1 1 1 1 2 1 1 3 3 1 1 4 6 4 1
int[][] triangle = new int[5][5];
for(int i = 0;i < 5;i++){
arr[i][0] = 1;
arr[i][i] = 1;
}
for(int i = 2;i < 5;i++){
for (int j = 1; j < i; j++) {
triangle[i][j] = triangle[i-1][j-1] + triangle[i-1][j];
}
}
for (int i = 0; i < triangle.length; i++) {
for (int j = 0; j <= i; j++) {
System.out.print(triangle[i][j]+" ");
}
System.out.println();
}
首先,创建了一个大小为5x5的二维数组triangle。
然后,使用两个循环来初始化数组。第一个循环是为了将每一行的第一个和最后一个元素设为1。第二个循环是为了计算每一行的其他元素的值,通过将上一行两个相邻元素的和赋值给当前行的对应位置。
最后,使用两个循环遍历数组,并输出每个元素的值。在每行的末尾使用println()方法换行输出。
这样就可以生成一个杨辉三角并输出。