Java知识点2
主要为数组中的排序问题:
随意在数组中给出一系列数,对这些数进行排序:
选择排序法
对一个长度为i的数组,进行i遍的遍历,第一遍遍历出最大的元素,并与第一个
元素交换位置,如此遍历n遍,就能将所有元素按从大到小排序
package Test;
public class Test4 {
public static void main(String[] args) {
int [] array= {1,34,56,3,98,7,45,33,11,23};
int key;
int temp;
int temp1;
System.out.println("排序前的数组为:");
for(int a:array) {
System.out.print(a+" ");
}
for(int i=0;i<array.length;i++) {
temp=i;
key=array[i];
for(int j=i;j<array.length;j++) {
if(array[j]<key) {
//在遍历中找到最小的值
temp=j;
key=array[j];
}
}
//找到的最小值与前面的值交换顺序
temp1=array[i];
array[i]=array[temp];
array[temp]=temp1;
}
System.out.println();
System.out.println("排序后的数组为:");
for(int b:array) {
System.out.print(b+" ");
}
}
}
结果:
排序前的数组为:
1 34 56 3 98 7 45 33 11 23
排序后的数组为:
1 3 7 11 23 33 34 45 56 98
冒泡排序法(交换排序法)
把数组中比较小的元素使其上浮,且每次都从底端开始
package Test;
public class Test5 {
public static void main(String[] args) {
int []array= {12,56,3,98,7,23,1,33,27,11};
int temp;
System.out.println("排序前的数组为:");
for(int a:array) {
System.out.print(a+" ");
}
for(int i=0;i<array.length;i++) {
for(int j=i+1;j<array.length;j++) {
if(array[i]>array[j]) {
temp=array[i];
array[i]=array[j];
array[j]=temp;
}
}
}
System.out.println();
System.out.println("排序后的数组为:");
for(int b:array) {
System.out.print(b+" ");
}
}
}
结果 :
排序前的数组为:
12 5 3 98 7 23 1 33 27 11
排序后的数组为:
1 3 7 11 12 23 27 33 56 98
生成一个不规则的二维数组
public class Test7 {
public static void main(String[] args) {
int[][] array = new int[4][];
array[0] = new int[1]; //第一行有一个元素
array[1] = new int[2]; //第二行有两个元素
array[2] = new int[3]; //第三行有三个元素
array[3] = new int[4]; //第四行有四个元素
int k = 1;
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++)
array[i][j] = k++;
}
System.out.println("所得到的不规则的二维数组:");
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
System.out.print(array[i][j] + " ");
}
System.out.println();
}
}
}
结果:
所得到的不规则的二维数组:
1
2 3
4 5 6
7 8 9 10