Java数组排序基础算法,二维数组,排序时间计算,随机数产生

来源:互联网 发布:小号托管平台源码 编辑:程序博客网 时间:2024/06/05 18:56
import java.util.Arrays; //包含Arraysimport 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();}}}

0 0
原创粉丝点击