吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3969|回复: 11
收起左侧

[Java 转载] [java]分享JAVA数据结构和算法--数组和简单排序

[复制链接]
鬼面书生 发表于 2018-7-27 18:50
本帖最后由 鬼面书生 于 2018-7-27 18:55 编辑

数组数组(array)是相同类型变量的集合,可以使用共同的名字引用它。数组可被定义为任何类型,可以是一维或多维。数组中的一个特别要素是通过下标来访问它。数组提供了一种将有联系的信息分组的便利方法。一维数组一维数组(one-dimensional array )实质上是相同类型变量列表。要创建一个数组,你必须首先定义数组变量所需的类型。通用的一维数组的声明格式是:typevar-name[ ]; 获得一个数组需要2步。第一步,你必须定义变量所需的类型。第二步,你必须使用运算符new来为数组所要存储的数据分配内存,并把它们分配给数组变量。这样Java 中的数组被动态地分配。如果动态分配的概念对你陌生,别担心,它将在本书的后面详细讨论。数组的初始化(array initializer )就是包括在花括号之内用逗号分开的表达式的列表。逗号分开了数组元素的值。Java 会自动地分配一个足够大的空间来保存你指定的初始化元素的个数,而不必使用运算符newJava严格地检查以保证你不会意外地去存储或引用在数组范围以外的值。Java 的运行系统会检查以确保所有的数组下标都在正确的范围以内(在这方面,Java C/C++从根本上不同,C/C++ 不提供运行边界检查)。多维数组Java中,多维数组(multidimensional arrays )实际上是数组的数组。你可能期望,这些数组形式上和行动上和一般的多维数组一样。然而,你将看到,有一些微妙的差别。定义多维数组变量要将每个维数放在它们各自的方括号中。例如,下面语句定义了一个名为twoD 的二维数组变量。inttwoD[][] = new int[4][5]; 简单排序简单排序中包括了:冒泡排序、选择排序、插入排序;1.冒泡排序的思想:假设有N个数据需要排序,则从第0个数开始,依次比较第0和第1个数据,如果第0个大于第1个则两者交换,否则什么动作都不做,继续比较第1个第2个…,这样依次类推,直至所有数据都“冒泡”到数据顶上。冒泡排序的的java代码:Publicvoid bubbleSort(){intin,out;for(out=nElems-1;out>0;out--)  for(in=0;in<out;in++)  {    If(a[in]>a[in+1])      Swap(in,in+1);}}算法的不变性:许多算法中,有些条件在算法执行过程中始终是不变的。这些条件被称 为算法的不变性,如果不变性不为真了,则标记出错了;冒泡排序的效率ON*N),比较N*N/2,交换N*N/42. 选择排序的思想:假设有N条数据,则暂且标记第0个数据为MIN(最小),使用OUT标记最左边未排序的数据,然后使用IN标记第1个数据,依次与MIN进行比较,如果比MIN小,则将该数据标记为MIN,当第一轮比较完后,最终的MINOUT标记数据交换,依次类推;选择排序的java代码: Public void selectSort(){Int in,out,min;For(out=0;out<nElems-1;out++){  Min=out;For(in=out+1;in<nElems;in++)  If(a[in]<a[min])  Min=in;Swap(out,min);}}选择排序的效率:ON*N),比较N*N/2,交换<N 选择排序与冒泡排序比较,比较次数没有明显改变,但交换次数明显减少了很多;3. 插入排序的思想:插入排序是在部分数据有序的情况下,使用OUT标记第一个无序的数据,将其提取保存到一个中间变量temp中去,使用IN标记空位置,依次比较temp中的值与IN-1的值,如果IN-值大于temp的值,则后移,直到遇到第一个比temp小的值,在其下一个位置插入;插入排序的java代码:Public void InsertionSort()  {    Int in,out;    For(out=1;out<nElems;out++)    {      Long temp=a[out]      In=out;      While(in>0&& a[in-1]>temp)      {        A[in]=a[in-1];        - -in;}A[in]=temp;}}插入排序的效率:ON*N, 比较N*N/4,复制N*N/4;插入排序在随机数的情况下,比冒泡快一倍,比选择稍快;在基本有序的数组中,插入排序几乎只需要ON);在逆序情况下,并不比冒泡快;

免费评分

参与人数 3吾爱币 +3 热心值 +3 收起 理由
lin_xop + 1 + 1 热心回复!
wuaiw + 1 + 1 谢谢@Thanks!
15032315786 + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

aoxueyinshuang 发表于 2018-7-31 21:32
受教了~
记得当时我学Java的时候,哦不,其实是任何一种计算机编程语言的时候,一到这个循环这块内容时候就容易犯晕……
最后基础没打好,以致最后毕业求职处处碰壁,现在想想蛮可惜的。
雨落丶千寒 发表于 2018-7-27 19:08
ws101929 发表于 2018-7-27 19:29
夏橙M兮 发表于 2018-7-27 20:02
楼主,能不能好好排版排版。看着费劲。感谢分享。
YTTY 发表于 2018-7-27 22:59
学习了学习了
wushaominkk 发表于 2018-7-28 12:37
发帖前看清版规,请整理下排版
lijiayi0719 发表于 2018-7-28 22:51
太基础了,来点高深的,起码加个快排啊。。。
Wesley99168 发表于 2018-11-20 14:38
书呢?咋没有看到
ANDCHUNG 发表于 2018-11-21 10:10
copy????
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 22:30

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表