排序:
1)冒泡排序:就是每趟从待排序的数组中比较相邻两个数字的大小,将数字小的放在前面,数字大的放在后面;重复第一趟的操作,直到完成排序为止。
public static void main(String [] args) {
int [] a= {3,2,1,5};
for(int i=a.length-1;i > 0; i--) { //外层循环控制的是循环次数
for(int j=0;j < i;j++) { //内层循环控制每一趟排序多少次
if(a[j] > a[j+1]) {
int temp = a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
for(int b:a) { //增强for循环数组出来的每一个元素赋值打印
System.out.print(b+" ");
}
System.out.println();
}
}
增强For循环写法
for(int b:a) a数组中的每一个元素赋值b
2)选择排序:就是每次从一组待排序的数组中找到最小值(或最大值)然后与该序列的起始位置进行替换,以此类推,直到待排序的数组排序好为止。
public static void main(String [] args) {
int [] a={1,3,2,4};
System.out.println("选择排序前的顺序:");
for(int num:a) { //增强for循环打印未排序的结果
System.out.print(num+" ");
}
for(int i=0;i < a.length; i++) {
for(int j=i;j < a.length;j++) {
if(a[i] > a[j]) {
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
System.out.println();
System.out.println("选择排序后的顺序:"); //增强for循环打印排序好的结果
for(int ii:a) {
System.out.print(ii+" ");
}
}
折半查找(halffond):在有序的数列中,进行二分法查找,每次取出搜索范围的中间值进行比较,依法再进行范围的缩小,知道找出所需要的值。
public static void main(String[] args) {
int [] a = {1,2,3,4,5,6,7,8,9};
int max = a.length-1;
int min = 0;
int num = 8;
int index = -1;
while(min <= max) { //判断这个数组是否有效
int mid =(max + min) / 2; // 取这个数组的中间值
if(a[mid] == num) { // 判断中间值是不是我要找的值,如果是赋值给index返回。
index = mid;
break;
}
else if(a[mid] > num) { //如果这个值小于我们取的中间值,左半区0-{mid-1}去折半找
max = mid - 1;
}
else {
min=mid + 1; //如果大于这个值从右半区找中间值加1,到max
}
}
System.out.println(index);
}
二维数组赋值:
public static void main(String[] args) {
int [] [] a = new int [3][3];
int no = 1; //赋值
for(int i = 0;i < a.length;i++) {
for(int j = 0;j < 3;j++) {
a[i][j] = no;
no++;
}
}
//打印
outArr(a);
}
public static void outArr(int [][] a) {
for(int i = 0;i < a.length;i++) {
for(int j =0;j < a[i].length;j++) {
System.out.print(a[i][j]+" ");
}
System.out.println();
}
}
public static void main(String [] args) {
int[] a= {1,2,3}; //数组a和数组b
int[] b=new int[2];
arrayCopy(a,b); //调用方法
}
public static void arrayCopy(int [] a,int[] b) {
if(a.length >= b.length) { //判断a数组的长度是不是大于等于b的长度
for(int i=0;i < b.length;i++) { //如果大于等于b的长度截取赋值
b[i]=a[i];
}
}
else{ //如果a小于b长度 环绕赋值
for(int i=0;i < b.length;i++) {
b[i]=a[i%(a.length)];
}
}
for(int i=0;i < b.length;i++) {
System.out.print(b[i]+" ");
}
}
}
横向打印三维数组:
public static void out3D() { //函数out3D
int [][][] a = {{{1,2,3},{4,5,6},{7,8,9}},
{{10,11,12},{13,14,15},{16,17,18}},
{{19,20,21},{22,23,24},{25,26,27}}};
//循环行数
for(int j = 0; j < a[0].length; j++) {
//输出每一行
for(int i = 0;i <a.length;i++) {
for(int k = 0;k < a[i][j].length;k++) {
System.out.print(a[i][j][k] + " ");
}
System.out.print(" ");
}
System.out.println();
}
}