黑马程序员技术交流社区

标题: 数组的细节、排序 [打印本页]

作者: 黄茂霖    时间: 2013-4-25 20:13
标题: 数组的细节、排序
本帖最后由 shenqi 于 2013-4-25 20:55 编辑

数组的声明有两种方式: 数据类型[] 数组名 or 数据类型 数组名[]
为什么有两种这样的声明方式?有人说是为了照顾C语言的程序员。不管怎么说,存在就有一定的道理,那到底有什么区别呢?
我分别为两种方式测试了一下效率,发现(数据类型[] 数组名)这种声明方式效率更高。以下是测试代码,测试环境(系统:windows xpjdk6.0版本,工具MyEclipse9.0)
  1. [/align]package com.itcast.itheima;
  2. import java.util.Date;
  3. public class ArrayTest {
  4.         public static void main(String[] args) {
  5.                 //获取当前时间
  6.                 long start = System.currentTimeMillis();
  7.                 String[] array1 = new String[9];
  8.                 //打印出耗时
  9.                 System.out.println("array1"+new Date((System.currentTimeMillis()-start)).getSeconds());
  10.                 //获取当前时间
  11.                 long start2 = System.currentTimeMillis();
  12.                 String array2[] = new String[9];
  13.                 //打印出耗时
  14.                 System.out.println("array2"+new Date((System.currentTimeMillis()-start2)).getSeconds());
  15.         }
  16. }
复制代码
总结:
1. 数据类型[] 数组名 这种方式确实比较好
2. 采用这种方式声明更标准,Eclipse和MyEclipse生成的main函数的参数是采用这种方式public static void main(String[] args)
一维数组的排序:
排序的分类:
①    内部排序:将需要处理的所有数据都加载到内部存储器中进行排序(包括交换式排序、选择式排序、插入式排序)
②    外部排序法:数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。包括(合并排序法和直接合并排序法)
下面主要介绍内部排序中的交换排序和选择排序:
1.  交换排序法可分为两种:
冒泡排序法、快速排序法
2.  选择排序法又可分为两种:
选择排序法、堆排序法
由于长度限制,冒泡代码页比较容易就不贴出来了,贴选择排序和快速排序

由于代码贴出来总显示一堆HTML标记,郁闷!怎么解决?上面一段也是贴了好久!
选择排序代码连接:http://blog.163.com/it_network/blog/static/218708395201332585229740/
快速排序代码连接:http://blog.163.com/it_network/blog/static/218708395201332582754334/


总结:
1. 快速排序法虽然很快,但是程序复杂,初学者刚开始难理解,耗内存。
2. 冒泡排序虽然远不及快速排序快,但占内存小,程序复杂性较低、对初学者比较容易上手。
3. 选择排序和冒泡排序相似度很高,必须分清以免混淆。
4. 交换的时候可采用位移的方式,效率较高,可读性低.
毕姥爷视频有详细讲解:
array[x]=array[x]^array[y];
array[y]=array[x]^array[y];
array[x]=array[x]^array[y];
5.关于更多的排序可以参考:http://blog.csdn.net/shan9liang/article/details/7540928


作者: 尹丽峰    时间: 2013-4-25 20:44
楼主原创吗?
作者: 黄茂霖    时间: 2013-4-25 20:47
尹丽峰 发表于 2013-4-25 20:44
楼主原创吗?

是啊!~~我服了这个编辑器!~每次贴代码的时候生成就一堆HTML标记!~坑爹!~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2