J2SE之_数组
数组概述
一维数组的声明
、
数组对象的创建
元素为引用数据类型的数组
数组初始化(1)
数组初始化(2)
数组元素的默认初始化
数组元素的引用
public class TestArgs { public static void main(String[] args) { /* for(int i=0; i<args.length; i++) { System.out.println(args[i]); } System.out.println( "Usage: java Test \"n1\" \"op\" \"n2\""); */ if(args.length<3){ System.out.println( "Usage: java Test \"n1\" \"op\" \"n2\""); System.exit(-1); } double d1 = Double.parseDouble(args[0]); double d2 = Double.parseDouble(args[2]); double d = 0; if(args[1].equals("+")) d = d1+d2; else if(args[1].equals("-")) d = d1-d2; else if(args[1].equals("x")) d = d1*d2; else if(args[1].equals("/")) d = d1/d2; else{ System.out.println("Error operator!"); System.exit(-1); } System.out.println(d); } }
public class TestArray { public static void main(String[] args){ int[] a = new int[args.length]; for(int i=0; i<args.length; i++){ a[i] = Integer.parseInt(args[i]); } System.out.print("未排序前:"); print(a); System.out.print("\n排序后为:"); //bubble_sort(a); selectionSort(a); print(a); } //选择排序 private static void selectionSort(int[] a){ for(int i=0;i<a.length;i++){ for(int j=i+1; j<a.length;j++){ if(a[i]>a[j]){ int temp=0; temp=a[i]; a[i]=a[j]; a[j]=temp; } } } } //选择排序改进 private static void selectionSort(int[] a){ int k, temp; for(int i=0;i<a.length;i++){ k = i; for(int j=k+1; j<a.length;j++){ if(a[j]>a[k]){ k = j; } } if(k != i){ temp = a[i]; a[i] = a[k]; a[k] = temp; } } } //冒泡排序 private static void bubble_sort(int[] a){ for(int i=0;i<a.length-1;i++){ for(int j=0; j<a.length-i-1;j++){ if(a[j] > a[j+1]){ int temp = 0; temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; } } } } //打印一维数组 private static void print(int[] a){ for(int i=0; i<a.length;i++){ System.out.print(a[i]+" "); } } }
课堂练习
public class TestDateSort { public static void main(String[] args) { Date[] days = new Date[5]; days[0] = new Date(2006, 5, 4); days[1] = new Date(2006, 7, 4); days[2] = new Date(2008, 5, 4); days[3] = new Date(2004, 5, 9); days[4] = new Date(2004, 5, 4); Date d = new Date(2006, 7, 4); String str = String.valueOf(d); //str = d.toString(); bubbleSort(days); for(int i=0; i<days.length; i++) { System.out.println(days[i]); } System.out.println(binarySearch(days, d)); } public static Date[] bubbleSort(Date[] a){ int len = a.length; for(int i = len-1;i>=1;i--){ for(int j = 0;j<=i-1;j++){ if(a[j].compare(a[j+1]) > 0){ Date temp = a[j]; a[j]=a[j+1]; a[j+1]=temp; } } } return a; } public static int binarySearch(Date[] days, Date d) { if (days.length==0) return -1; int startPos = 0; int endPos = days.length-1; int m = (startPos + endPos) / 2; while(startPos <= endPos){ if(d.compare(days[m]) == 0) return m; if(d.compare(days[m]) > 0) { startPos = m + 1; } if(d.compare(days[m]) < 0) { endPos = m -1; } m = (startPos + endPos) / 2; } return -1; } } class Date { int year, month, day; Date(int y, int m, int d) { year = y; month = m; day = d; } public int compare(Date date) { return year > date.year ? 1 : year < date.year ? -1 : month > date.month ? 1 : month < date.month ? -1 : day > date.day ? 1 : day < date.day ? -1 : 0; } public String toString() { return "Year:Month:Day -- " + year + "-" + month + "-" + day; } }
加3退1
public class Count3Quit { public static void main(String[] args){ boolean[] arr= new boolean[500]; for(int i=0;i<arr.length;i++){ arr[i]=true; } int leftCount = arr.length; //还剩下多少人 int countNum = 0; //计数器 int index = 0; //第几个人 while(leftCount > 1){ if(arr[index] == true){ countNum ++; if(countNum == 3){ countNum = 0; arr[index] = false; leftCount --; } } index ++; if(index == arr.length){ index = 0; //数到499从头开始继续数 } } for(int i=0;i<arr.length;i++){ if(arr[i] == true){ System.out.println(i); } } } }
面向对象写法
public class Count3Quit2 { public static void main(String[] args){ KidCircle kc = new KidCircle(500); int countNum = 0; //计数器 Kid k = kc.first; while(kc.count > 1){ countNum++; if(countNum == 3){ countNum = 0; kc.delete(k); } k = k.right; } System.out.println(kc.first.id); } } class Kid { int id; Kid left; Kid right; } class KidCircle { int count = 0; Kid first, last; KidCircle(int n){ for(int i=0; i<n; i++){ add(); } } void add(){ Kid k = new Kid(); k.id = count; if(count <= 0){ first = k; last = k; k.left = k; k.right = k; }else{ last.right = k; k.left = last; k.right = first; first.left = k; last = k; } count ++; } void delete(Kid k){ if(count <= 0){ return; }else if(count == 1){ first = last = null; }else{ k.left.right = k.right; k.right.left = k.left; if(k == first){ first = k.right; }else if(k == last){ last = k.left; } } count --; } }
二分查找
public class TestSearch { public static void main(String[] args) { int a[] = { 1, 3, 6, 8, 9, 10, 12, 18, 20, 34 }; int i = 12; //System.out.println(search(a, i)); System.out.println(binarySearch(a, i)); } public static int search(int[] a, int num) { for(int i=0; i<a.length; i++) { if(a[i] == num) return i; } return -1; } public static int binarySearch(int[]a, int num) { if (a.length==0) return -1; int startPos = 0; int endPos = a.length-1; int m = (startPos + endPos) / 2; while(startPos <= endPos){ if(num == a[m]) return m; if(num > a[m]) { startPos = m + 1; } if(num < a[m]) { endPos = m -1; } m = (startPos + endPos) / 2; } return -1; } }
二维数组
数组的拷贝
public class TestArrayCopy { public static void main(String args[]) { String[] s = {"Mircosoft","IBM","Sun","Oracle","Apple"}; String[] sBak = new String[6]; System.arraycopy(s,0,sBak,0,s.length); for(int i=0;i<sBak.length;i++){ System.out.print(sBak[i]+" "); } System.out.println(); int[][] intArray = {{1,2},{1,2,3},{3,4}}; int[][] intArrayBak = new int[3][]; System.arraycopy (intArray,0,intArrayBak,0,intArray.length); intArrayBak[2][1] = 100; for(int i = 0;i<intArray.length;i++){ for(int j =0;j<intArray[i].length;j++){ System.out.print(intArray[i][j]+" "); } System.out.println(); } } }
浙公网安备 33010602011771号