Java数组排序基础算法,二维数组,排序时间计算,随机数产生
2016-08-18 16:00
876 查看
import java.util.Arrays; //包含Arrays import java.util.Random; public class HelloWorld { public static void main(String[] args){ // Scanner s = new Scanner(System.in); // System.out.println("请输入一个数字"); // int num = s.nextInt(); //打印数组 int []a = {10,14,2,3,9,87} ; sort(a); System.out.println(Arrays.toString(a)); a = insertValue(a,15); System.out.println(Arrays.toString(a)); int []b = {2,34,87,1,2,77,8,56,2} ; insertsort(b); System.out.println(Arrays.toString(b)) ; ///////////////////////////////////////// //数组中自带的API排序接口 int []c = {11,20,8,48,45,23,14} ; Arrays.sort(c);//调用sort方法,jdk自带,非常高效的算法 System.out.println(Arrays.toString(c)) ; int []d = new int[1000000]; for(int i = 0 ; i < d.length ;i++){ Random r = new Random(); d[i] = r.nextInt();//获取一个随机的整数 } long start = System.currentTimeMillis() ;//获取当前的时间到1970开始时间相差的毫秒 Arrays.sort(d); //对随机产生数组的元素进行排序,性能最好,运行最快 //insertsort(d); //sort(d) long end = System.currentTimeMillis(); System.out.println(end-start);//计算当前排序花费的时间 //二维数组 Two_array(); } //选择排序算法 //跟三个数交换是同样的原理 public static void sort(int []a){ for(int i = 0 ; i < a.length - 1 ; i++){ for(int j = i + 1 ; j < a.length ; j++){ if(a[i] > a[j]){ int temp = a[i] ; a[i] = a[j] ; a[j] = temp ; } } } } /* * a[0]和a[1]比较如果大则交换---->a[0]和a[1]中大的放入了a[1] * a[1]和a[2]比较如果大则交换---->a[0],a[1],[2]中大的放入了a[2] * a[2]和a[3]比较如果大则交换 * ..... * a[4]和a[5]比较如果大则交换---->最大的放入了a[5] ; * -------------------------------第一轮 * a[0]和a[1],a[1]和a[2],a[2]和a[3],a[3]和a[4]------第二轮 * * ...最后一轮a[0]和a[1]比较 */ //冒泡排序算法 public static void sort1(int []a){ for(int i = 0 ; i < a.length-1 ; i++){ for(int j = 0 ; j < a.length - 1 - i ; j++){ if(a[j] > a[j+1]){ int temp = a[j]; a[j] = a[j+1]; a[j+1] = temp ; } } } } //插入一个数以后自动排序--->一个已经排好序的数组,插入一个新元素 public static int[] insertValue(int []a , int value){ //从最后一个元素开始和value进行比较,如果比value大,这些元素都后移 //一直到value大于数组的某个元素,那么说明value就应该放在这个元素之后 a = Arrays.copyOf(a, a.length+1); //因为前面扩容了,最后一个元素为空,要最后一个元素的前一个才是 for(int i = a.length - 2 ; i >= 0 ; i--){ if(value < a[i]) a[i+1] = a[i] ; //后移动 else break ; a[i+1] = value ; } return a ; } /** * a[0]作为基本量,拿出a[1]进行插入工作 a[0]和a[1]已经排好序了 * a[0],a[1]作为基本量 拿出a[2]进行插入工作 a[0],a[1],a[2]已经排好序了 * .....依次类推 */ //插入排序 public static void insertsort(int []a){ int t , j; for(int i = 1 ; i < a.length ; i++){ t = a[i]; for(j = i-1 ; j >= 0 && t < a[j]; j--){ a[j+1] = a[j] ; } } } public static void Two_array() { int [][] a = { {1,2,3,4,5}, {6,7,8,9,10}, {5,9,7,8,3}, }; int [][]b = new int[][]{{1,2,3},{4,5,6}}; System.out.println(a.length); /* * a中有三个一维数组 * 第一个a[0] * ......a[1] * */ //二维数组中第二个一维数组的元素的长度 System.out.println(a[1].length); //遍历第二个一维数组的长度 for(int i = 0 ; i < a[1].length ; i++){ System.out.print(a[1][i] + " "); } System.out.println(); /*遍历二维数组中所有的元素*/ for(int i = 0 ; i < a.length ;i++){ for(int j = 0 ; j < a[1].length ; j++){ System.out.print(a[i][j]+" ") ; } System.out.println(); } } }
相关文章推荐
- Java数组排序基础算法,二维数组,排序时间计算,随机数产生
- Java数组排序基础算法,二维数组,排序时间计算,随机数产生
- JAVA代码—算法基础:计算已排序的数组中不重复的元素个数
- 【幻化万千戏红尘】qianfengDay11-java基础学习:数组,排序,算法
- java 基础知识-数组的7种算法(排序、求和、最值、遍历...)
- JAVA基础day04 数组学习 排序和查找基本算法
- java 基础知识-数组的7种算法(排序、求和、最值、遍历...)
- 排序算法之基数排序,随机数的产生和程序运行时间的计算
- [java学习笔记]java语言基础概述之数组的定义&常见操作(遍历、排序、查找)&二维数组
- JAVA基础——初识JAVA(六)(数组,数组遍历,数组排序,数组常用方法、二维数组)
- 一个页面从输入URL到页面加载显示完成,这个过程都发生什java 基础知识-数组的7种算法(排序、求和、最值、遍历...)么?
- java基础算法之随机数的产生
- java 基础知识-数组的7种算法(排序、求和、最值、遍历...)
- 黑马程序员-----JAVA基础--数组排序的两种算法
- Java基础数组(二维数组行列倒置排序方法)
- Java入门:基础算法之产生随机数
- 算法方法JAVA中运用数组的四种排序方法
- java基础之 数组排序
- java基础知识4--数组,排序,二分查找
- 黑马程序员:Java基础总结----数组排序问题