Java数组排序基础算法,二维数组,排序时间计算,随机数产生
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数组排序基础算法,二维数组,排序时间计算,随机数产生的更多相关文章
- python3--算法基础:二维数组转90度
python3--算法基础:二维数组转90度 [0, 1, 2, 3][0, 1, 2, 3][0, 1, 2, 3][0, 1, 2, 3] 二维数组转90度 [0, 0, 0, 0][1, 1, ...
- java怎么定义一个二维数组?
java中使用 [][] 来定义二维数组 定义数组时也可同时初始化下面是一些例子float[][] numthree; //定义一个float类型的2维数组numthree=new float[5][ ...
- java基础编程——二维数组中的查找
题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...
- Java基础之二维数组的回顾
class ArrayWork { /* * 二维数组的复习! * * 2014年4月2日 21:45:50 * * * **/ public static void main(String[] ar ...
- java基础之二维数组-杨辉三角
首先呢你要知道什么是杨辉三角? 答:杨辉三角,是二项式系数在三角形中的一种几何排列. 简单的说一下就是两个未知数和的幂次方运算后的系数问题,比如(x+y)的平方=x的平方+2xy+y的平方,这样系数就 ...
- Java基础教程——二维数组
二维数组 Java里的二维数组其实是数组的数组,即每个数组元素都是一个数组. 每个数组的长度不要求一致,但最好一致. // 同样有两种风格的定义方法 int[][] _arr21_推荐 = { { 1 ...
- Java基础(7):二维数组初始化时需要注意的问题
二维数组可以先指定行,再指定列:但不能先指定列,再指定行 没有说明二维数组的行的个数,在定义二维数组时也可以只指定行的个数,然后再为每一行分别指定列的个数.如果每行的列数不同,则创建的是不规则的二维数 ...
- java基础之二维数组不定义列数
有一种特殊的二维数组,它的行数确定,但是每行的列数不确定.这样的的数组实现方法:先创建制定行数,列数缺省的二维数组,然后对数组的每一行重新初始化.举例如下: package day5; //第二种定义 ...
- python-Day4-迭代器-yield异步处理--装饰器--斐波那契--递归--二分算法--二维数组旋转90度--正则表达式
本节大纲 迭代器&生成器 装饰器 基本装饰器 多参数装饰器 递归 算法基础:二分查找.二维数组转换 正则表达式 常用模块学习 作业:计算器开发 实现加减乘除及拓号优先级解析 用户输入 1 - ...
随机推荐
- iphone inline video fragments
DOMContentLoaded 它在DOM加载之后及资源加载之前被触发 通过递归调用同一方法来不断更新画面以达到动起来的效果,但它优于setTimeout/setInterval的地方在于它是由浏览 ...
- 关于一些基础的Java问题的解答(五)
21. 实现多线程的两种方法:Thread与Runable 在Java中实现多线程编程有以下几个方法: 1.继承Thread类,重写run方法 public class Test { public s ...
- JavaScript数据结构和算法----队列
前言 队列和栈很像,只是用了不同的原则.队列是遵循先进先出(FIFO)原则的一组有序的的项,队列在尾部添加新元素,从顶部移除元素.最新添加的元素必须必须排队在队列的,末尾.可以想象食堂排队买饭的样子. ...
- BZOJ#1717:[Usaco2006 Dec]Milk Patterns 产奶的模式(后缀数组+单调队列)
1717: [Usaco2006 Dec]Milk Patterns 产奶的模式 Description 农夫John发现他的奶牛产奶的质量一直在变动.经过细致的调查,他发现:虽然他不能预见明天产奶的 ...
- 566. Reshape the Matrix
In MATLAB, there is a very useful function called 'reshape', which can reshape a matrix into a new o ...
- 利用生产者消费者模型和MQ模型写一个自己的日志系统-并发设计里一定会用到的手段
一:前言 写这个程序主要是用来理解生产者消费者模型,以及通过这个Demo来理解Redis的单线程取原子任务是怎么实现的和巩固一下并发相关的知识:这个虽然是个Demo,但是只要稍加改下Appender部 ...
- 阿里架构师带你深入浅出jvm
本文跟大家聊聊JVM的内部结构,从组件中的多线程处理,JVM系统线程,局部变量数组等方面进行解析 JVM JVM = 类加载器(classloader) + 执行引擎(execution engine ...
- 使用gogs搭建git私有仓库
搭建gogs 我的机器环境:centos 7 1.安装git yum install git 2.安装mysql gogs的数据存在mysql中,需要安装一个mysql来存数据,当然也有其他的选择 ...
- Android动态修改ToolBar的Menu菜单
Android动态修改ToolBar的Menu菜单 效果图 实现 实现很简单,就是一个具有3个Action的Menu,在我们滑动到不同状态的时候,把对应的Action隐藏了. 开始上货 Menu Me ...
- 使用eclipse开发工具与hibernate开发者为开源一起做贡献
本文作者:苏生米沿 本文地址:http://blog.csdn.net/sushengmiyan/article/details/50525363 hibernate使用的是gradle自动构建工具, ...