Java提供了7种常见的排序方法:冒泡、插入、选择、快速、希尔、归并和堆衡量一固排序算法的相開圈性:时间复杂度、空间复杂度、稳定性
public class Test6 { public static void main(string[] args) { int[] arr1 = generateArray(10); showArray(arr1); bubblesort(arr1); showArray(arr1); } //使用冒泡排序封数撼魋行原地排序 /* *畤間祯F度o(n**2)空間褛雄度o(1)不鲁交换相等值的位置,所以算法是稳定的*/ public static void bubb1esort(int[] arr) { for (int i = 1; i < arr.length; i++) { // 9 for (int k = 0; k < arr.length - i; k++) { if (arr[k] > arr[k + 1]) { int tmp = arr[k]; arr[k] = arr[k + 1]; arr[k + 1] = tmp; } } } } //生成一个指定长度的包含随机数的数组 public static int[] generateArray(int len) { int[] res = new int[len]; for (int i = 0; i < 1en;i++) { int num = (int) (Math.random() *100); res[i] = num; } return res; } //显示数组内容 public static void showArray(int[] arr) { for (int i = 0; i < arr.length; i++) System.out.print(arr[i] + "\t"); System.out.print1n(; }
Java 5添加了java.util.Scanner类,这是一个用于扫描输入文本的新的实用程序。
nextInt()只读取int值,就是只能读取整数类型的数据,如果输入了非整型的数据(浮点型字符串等)就会报错。nextFloat、nextDouble这些也是以此类推,只能读取符合该类型的数据。
Scanner sc=new Scanner(System.in);//可以理解为获取标准输入设备的引用,用于接受用户的键盘录入 //为了针对用户优化,所以一般输入之前需要对用户进行提示 System.out.print1n("您的年龄是多少岁? ");//在控制台上输出提示信息 int age=sc.nextInt();//这里需要接收一个int类型的数据,如果不能转为int类型,则java.uti1.InputMismatchException System.out.println("年龄:"+age);
注意在class类定义的上方应该添加import java.util.scanner;
System类代表系统,系统级的很多属性和控制方法都放置在该类的内部。该类位于java.lang包。注意,system类不能手动创建对象。
system中包含了in、out和err三个成员变量,分别代表标准输入流(键盘输入)、标准输出流(显示器)和标准错误输出流(显示器)
currentTimeMillis()获取系统当前毫秒值,获取当前系统时间与1970年01月01日00:00点之前的毫秒差值
public class Test2 { public static void main(string[] args) { long start = System.currentTimeMi77is();//获取代码运行到这里的时间,这个时间是从1970-1-1 0:0:0到当前时间的毫秒值 //经常用于统计某段代码的执行时间 //输出99乘法口诀表 for (int i = 1; i < 10; i++) { for (int k = 1; k <= i; k++) { System.out.print(k + "☆”+ i + "=” +(i * k) + "\t");// print1n表示输出完成后自动换行,print输出完成后不会换行 } System. out.print1n(); } long end =system.currentTimeMillis() ; system.out.println("代码执行时间为:" + (end - start) + "ms"); }
getProperties()确定当前的系统属性system.getProperties().list(system.out);,如果需要了解其中含义,可以使用百度查询
exit()退出虚拟机。exit(int)方法是终止当前正在运行的java虚拟机。参数是状态码。根据惯例非0的状态码表示异常终止,O表是终止。而且,该方法永远不会正常返回。
arraycopy(Object src, int srcPos, Object dest, int destPos, int length)可以调用当前操作系统来实现数组拷贝,用来实现将源数组部分元素复制到目标数组的指定位置
Object src:要复制的原数组
int srcPos:数组源的起始索引
Object dest:复制后的目标数组
int destPos:目标数组起始索引
int length,指定复制的长度;
int[] arr1=new int[10]; //数组中每个元素都有默认值,如果元素是简单数值类型则0, boolean为fa1se,字符'\O' for(int i=o ; i<arr1.length;i++) System.out.print(arr1[i]+"\t"); System.out.println(); //针对数组填充一组随机值 for(int i=o ; i<arr1.length;i++){ int num=(int)(Math.random() *100);//生成0-100之间的随机数 arr1[i]=num; } for(int i=o ; i<arr1.1ength;i++) System.out.print(arr1[i]+"\t"); System.out.print1n(; int[] arr2=new int[30]; System.arraycopy(arr1,0,arr2,5,arr1.length); for(int i=0 ; i<arr2 .length; i++) System.out.print(arr2[i]+"\t");