当前位置:文档之家› 马士兵java第五章_数组_个人笔记

马士兵java第五章_数组_个人笔记

马士兵java第五章_数组_个人笔记
马士兵java第五章_数组_个人笔记

数据结构Java版第五章习题

第五章习题 数组、矩阵 (按照自己的情况选作部分习题,不要抄袭) 一、单项选择题 1. 二维数组M 的成员是6个字符(每个字符占一个存储单元)组成的串,行下标i 的范 围从0到8,列下标j 的范围从1到10,则存放M 至少需要(1)个字节;M 的第8列和第5行共占(2)个字节;若M 按行优先方式存储,元素M[8][5]的起始地址与当M 按列优先方式存储时的(3)元素的起始地址一致。() (1) A.90 B.180 C.240 D.540 (2) A.108 B.114 C.54 D.60 (3) A.M[8][5] B.M[3][10] C.M[5][8] D.M[0][9] 2. 二维数组M 的元素是4个字符(每个字符占一个存储单元)组成的串,行下标i 的范 围从0到4,列下标j 的范围从0到5,M 按行存储时元素M[3][5]的起始地址与M 按列存储时元素(1)的起始地址相同。() A.m[2][4] B.M[3][4] C.M[3][5] D.M[4][4] 3. 数组A 中,每个元素A 的存储占3个单元,行下标i 从1到8,列下标j 从1到10,从首地址SA 开始连续存放在存储器内,存放该数组至少需要的单元个数是(1),若该数组按行存放时,元素A[8][5]的起始地址是(2),若该数组按列存放时,元素A[8][5]的起始地址是(3)。 (1) A. 80 B.100 C.240 D.270 (2) A.SA+141 B.SA+144 C.SA+222 D.SA+225 (3) A.SA+141 B.SA+180 C.SA+222 D.SA+225 4. 稀疏矩阵一般的压缩存储方法有两种,即() A.二维数组和三维数组 B. 三元组和散列 C.三元组和十字链表 D. 散列和十字链表 5.若采用三元组压缩技术存储稀疏矩阵,只要把每个元素的行下标和列下标互换,就完成了对该矩阵的转置运算,这种观点() A.正确 B.错误 6.假设按行优先存储整数数组A[9][3][5][8]时,第一个元素的字节地址时100,每个整数占4个字节。问下列元素的存储地址是什么。 (1) a 0000 (2)a 1111 (3)a 3125 (4)a 8247 7.设有三对角矩阵A n×n ,将其三条对角线上的元素存于数组B[3][n]中,使得元素B[u][v]=a ij ,试推倒出从(i,j )到 (u,v)的下标变换公式。 8.假设一个准对角矩阵: a 11 a 12 a 21 a 22 a 33 a 34 a 43 a 44

Java数组练习题(带答案)

一填空题 1)数组的元素通过下标来访问,数组Array的长度为Array.length 。 2)数组复制时,"="将一个数组的引用传递给另一个数组。 3)JVM将数组存储在栈(堆或栈)中。 4)数组的二分查找法运用的前提条件是数组已经排序。 5)Java中数组的下标的数据类型是整型。 6)数组最小的下标是0 。 7)arraycopy()的最后一个参数指明复制元素的个数。 8)向方法传递数组参数时,传递的是数组的引用。 9)数组初始化包括数组的申明,创建和初始化。 10)数组下标访问超出索引范围时抛出数组越界异常 11)浮点型数组的默认值是0.0f 。 12)数组创建后其大小不能改变。 二选择题 1.下面错误的初始化语句是_ABD__ A. char str[]="hello"; B. char str[100]="hello"; C. char str[]={'h','e','l','l','o'}; D. char str[]={'hello'}; 2.定义了一维int型数组a[10]后,下面错误的引用是_B__ A. a[0]=1; B. a[10]=2; C. a[0]=5*2; D. a[1]=a[2]*a[0]; 3.下面的二维数组初始化语句中,正确的是____ A. float b[2][2]={0.1,0.2,0.3,0.4}; B. int a[][]={{1,2},{3,4}}; C. int a[2][]= {{1,2},{3,4}}; D. float a[2][2]={0}; 4.引用数组元素时,数组下标可以是_D___ A. 整型常量 B. 整型变量 C. 整型表达式 D. 以上均可 5.定义了int型二维数组a[6][7]后,数组元素a[3][4]前的数组元素个数为____ A. 24 B. 25 C. 18 D. 17 6.下列初始化字符数组的语句中,正确的是__B__ A. char str[5]="hello"; B. char str[]={'h','e','l','l','o','\0'}; C. char str[5]={"hi"}; D. char str[100]=""; 7.数组在Java中储存在 C 中 A. 栈 B. 队列 C. 堆 D. 链表 8.下面程序的运行结果是____ main() { int a[][]={{1,2,3},{4,5,6}}; System.out.printf("%d", a[1][1]); } A. 3 B. 4 C. 5 D. 6 9.下面程序的运行结果是_C___ main() {

java答案第五章

Java语言程序设计 第五章课后习题答案 1.什么是接口?接口起什么作用?接口与抽象类有何区别? 答:Java中的接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。 作用:接口是面向对象的一个重要机制,使用接口可以实现多态继承;接口中的所有方法都是抽象的,这些抽象方法由实现这一接口的不同类型来具体;接口还可以用来实现不同类之间的常量共享。 与抽象类不同的是:接口允许在看起来不相干的类之间定义共同行为。 2.试编程证明接口中的属性都隐含为static及final,所有的方法都为public。 //定义接口Shape2D interface Shape2D{ double Pi=3.14; double area(); } //Circle类继承接口Shape2D public class Circle implements Shape2D{ double radius; public Circle(double r){radius=r;} public double area(){return Pi*radius*radius;} } //A类(测试接口中隐含final的area()方法) public class A extends Shape2D{ public double area(); } //test5_2 public class test5_2{ public static void main(String args[]){ Circle c=new Circle(10); "Pi=3.14圆的面积:"+c.area()); SetPi b=new SetPi(3.00); "改变Pi=3.00圆的面积:"+c.area()); } } 运行结果: 3.在什么情况下,可以对父类对象的引用进行强制类型转换,使其转化成子类对象的引用?答:一个对象被塑型为父类或接口后,可以再一次被塑型回到它原来所属的类,即转化成原类对象的引用。 4.声明一个接口,此接口至少具有一个方法;在一个方法中声明内部类实现此接口,并返回此接口的引用。 //A类接口 public interface A{ void fuck();

Java数组测习题(带答案)

精心整理一填空题 1)数组的元素通过下标来访问,数组Array的长度为Array.length。 2)数组复制时,"="将一个数组的引用传递给另一个数组。 3)JVM将数组存储在栈(堆或栈)中。 4)数组的二分查找法运用的前提条件是数组已经排序。 5)Java中数组的下标的数据类型是整型。 6)数组最小的下标是0。 7) 8) 9) 10) 11) 12) 1. 2. 3. 4. 5. 6. 7. 8.A. 9. 10. 11.A 12.C.charstr[5]={"hi"}; D.charstr[100]=""; 13.数组在Java中储存在C中 14.A.栈 B.队列 C.堆 D.链表 15.下面程序的运行结果是____ main(){ inta[][]={{1,2,3},{4,5,6}}; }

A.3 B.4 C.5 D.6 16.下面程序的运行结果是_C___ 17.m ain(){ intx=30; int[]numbers=newint[x]; x=60; (numbers.length); } A.60 B.20 C.30 D.50 18. 19.m 20.c 21.i 22.w 23. 24.A 25.C 26. A. C.用 27. 28. A. 29. 30. A.char--'"u0000' B.Boolean--true C.float--0.0f D.int--0 31.关于数组作为方法的参数时,向方法传递的是A A.数组的引用 B.数组的栈地址 C.数组自身 D.数组的元素 32.关于数组复制,下列说法错误的是AC A."="可以实现数组复制 B.运用循环语句进行数组复制必须两个数组长度相同 C.arraycopy()方法没有给目标数组分配内存空间 D.数组复制是数组引用的传递

JAVA数组的排序方法实例

冒泡排序法 1.public class SortArray_01 { 2. public static void main(String args[]) { 3. int[] array = { 14, 5, 86, 4, 12, 3, 21, 13, 11, 2, 55 }; // 创建一个初始化的一维数组array 4. System.out.println("未排序的数组:"); 5. for (int i = 0; i < array.length; i++) { // 遍历array数组中的元素 6. System.out.print(" " + array[i]); // 输出数组元素 7. if ((i + 1) % 5 == 0) // 每5个元素一行 8. System.out.println(); 9. } 10. int mid; // 定义一个中间变量, 起到临时存储数据的作用 11. for (int i = 0; i < array.length; i++) { // 执行冒 泡排序法 12. for (int j = i; j < array.length; j++) { 13. if (array[j] < array[i]) { 14. mid = array[i]; 15. array[i] = array[j]; 16. array[j] = mid; 17. } 18. } 19. } 20. System.out.println("\n使用冒泡法排序后的数组:"); 21. for (int i = 0; i < array.length; i++) { // 遍历排好序的array数组中的元素 22. System.out.print(" " + array[i]); // 输出数组元素 23. if ((i + 1) % 5 == 0) 24. System.out.println(); // 每5 个元素一行 25. } 26. } 27.} 数组递增排序

java教程_第5章 数组

第5章数组 什么是数组?数组在实际程序中起到什么作用?数组用来存储数据,类似数据的缓存,是一组有序列的数据集合。通过本章的学习,可以了解数组如何进行数据存储,并且结合编程实例,掌握数组的设计和操作。 5.1数组概念的引入 本节将介绍数组的一些基本概念。这些概念有助于在以后的编程过程中,更好的使用数组。 5.1.1实例的引入 走进一家运动器材店,会看到很多的体育运动器材,有篮球、排球、足球、羽毛球、乒乓球、高尔夫、滑板、健身器材等等。如果要为这家店作一个数据库系统,首先要建立一个类似于集合的表格,如下所示。 {篮球,排球,足球,羽毛球,乒乓球,高尔夫,滑板,健身器材} 在程序开发中,将这种集合形式经过改装,变成了本章要重点讲述的数组,将上述的例子用数组来表示: 运动器材{篮球,排球,足球,羽毛球,乒乓球,高尔夫,滑板,健身器材} 5.1.2数组的概念 数组是具有相同数据类型的数据的集合,例如上一小节中提到的运动器材集合。相同的数据类型,意味着数组中每个数据都是同一类型数据,或者属于基本数据类型中相同类型的数据,或者属于对象类型中相同类型的数据。在生活中,一个班级的学生、一个学校的所有人、一个汽车厂的所有汽车等等,这些都可以形成一个数组。 数组如果按照维数来分,分为一维数组、二维数组、三维数组和多维数组等,每一维代表一个空间的数据。一维数组代表的就是一维空间的数据,例如自然数从1~10。 {1,2,3,4,5,6,7,8,9,10} 二维数组代表的就是二维空间的数据,例如在数学中的坐标。 {(1,2),(3,4),(5,6),(7,8)} 这里的每一组数据都代表了二维空间中的x和y的坐标值。 三位数组代表的就是三维空间的数据,所谓三维空间就是指立体空间,例如立体坐标。 {(1,2,3),(2,3,4),(3,4,5),(4,5,6),(5,6,7)} 这里的每一组数据都代表了三维空间中的(x,y,z)轴的坐标值。

Java基础第5章编程题答案

第五章编程题 1.编写一个程序,实现字符串大小写的转换并倒序输出。要求如下: (1)使用for循环将字符串“HelloWorld”从最后一个字符开始遍历。 (2)遍历的当前字符如果是大写字符,就使用toLowerCase()方法将其转换为小 写字符,反之则使用toUpperCase()方法将其转换为大写字符。 (3)定义一个StringBuffer对象,调用append()方法依次添加遍历的字符,最 后调用StringBuffer对象的toString()方法,并将得到的结果输出。 【参考答案】 public class Chap5e { public static void main(String[] args) { String str="Hell5oWorld"; char[] ch=str.toCharArray(); StringBuffer s=new StringBuffer(); for(int i=ch.length-1;i>=0;i--) { if(ch[i]>='A'&&ch[i]<='Z') s.append(String.valueOf(ch[i]).toLowerCase()); else if(ch[i]>='a'&&ch[i]<='z') s.append(String.valueOf(ch[i]).toUpperCase()); else s.append(String.valueOf(ch[i])); } System.out.print(s.toString()); } } 2. 利用Random类来产生5个20`30之间的随机整数并输出。 【参考答案】 import java.util.Random; public class Chap5e { public static void main(String[] args) { Random r=new Random(); for(int i=0;i<5;i++) { System.out.println(r.nextInt(30-20+1)+20); } } }

JAVA中运用数组的四种排序方法

JAVA中在运用数组进行排序功能时,一般有四种方法:快速排序法、冒泡法、选择排序法、插入排序法。 快速排序法主要是运用了Arrays中的一个方法Arrays.sort()实现。 冒泡法是运用遍历数组进行比较,通过不断的比较将最小值或者最大值一个一个的遍历出来。 选择排序法是将数组的第一个数据作为最大或者最小的值,然后通过比较循环,输出有序的数组。 插入排序是选择一个数组中的数据,通过不断的插入比较最后进行排序。下面我就将他们的实现方法一一详解供大家参考。 <1>利用Arrays带有的排序方法快速排序 import java.util.Arrays; publicclass Test2{ publicstaticvoid main(String[] args){ int[] a={5,4,2,4,9,1}; Arrays.sort(a); //进行排序 for(int i: a){ System.out.print(i); } } } <2>冒泡排序算法 publicstaticint[] bubbleSort(int[] args){//冒泡排序算法 for(int i=0;iargs[j]){ int temp=args[i]; args[i]=args[j]; args[j]=temp; } } } return args; } <3>选择排序算法 publicstaticint[] selectSort(int[] args){//选择排序算法 for (int i=0;i

JAVA基础练习程序 数组冒泡排序

/* 数组排序 */ public class BubbleSort { public static void main(String[] args){ int[] arr = {1,25,36,21,24,12,39,87}; System.out.println("排序前:"); String str = array2string(arr); System.out.println(str); bubblesort(arr); System.out.println("排序后:"); String str2 = array2string(arr); System.out.println(str2); } /*冒泡排序*/ public static void bubblesort(int[] arr){ for(int x=0;x arr[y+1]){ swap(arr,y,y+1); } } } } //定义数组元素之间位置交换 public static void swap(int[] arr,int index1,int index2){ //定义临时变量 int temp = arr[index1]; arr[index1] = arr[index2]; arr[index2] = temp; } //定义字符串打印 public static String array2string(int[] arr){ String str = ""; for(int x=0;x

java全排列一维数组

全排列一维数组.java 有时候,我们要对一个一维数组进行全排列,这个时候就要用到全排列的算法了,下面是一种全排列的算法.希望对你有用. public class全排列一维数组{ public static void main(String[] args){ String[]A={"1","2","3","4","5","6","7"}; String[][]B=quanpl(A);//创建一个二维数组存放A的全排列;并将数组A的第i种排列存放在二维数组B的第i行中 for(int i=0;i

1.java第五章程序练习

1.编写一个代表三角形的类,其中3条边为三角形的属性,并封装有求三角形的面积和周长的方法。分别针对3条边为3、4、5和7、8、9的三角形进行测试。package a.b.c; public class Triangle{ private double a,b,c; public Triangle(double a,double b,double c){ this.a = a; this.b = b; this.c = c; } public double area(){ double s = (a+b+c)/2.0; return Math.sqrt(s*(s-a)*(s-b)*(s-c)); } public double circle(){ return a+b+c; } public String toString(){ return "三角形("+a+","+b+","+c+")"; } public static void main(String[] args){ Triangle t1 =new Triangle(3,4,5); System.out.println(t1+"的面积为:"+t1.area()); System.out.println(t1+"的周长为:"+t1.circle()); Triangle t2 = new Triangle(7,8,9); System.out.println(t2+"的面积为:"+t2.area()); System.out.println(t2+"的周长为:"+t2.circle()); } } 2.编写一个学生类student,包含的属性有学号、姓名、年龄,将所有的学生存储在一个数组中,自拟数据,用数组的初始化方法给数组赋值。并实现如下操作:(1)将所有学生的年龄增加一岁 (2)按数组中顺序显示所有学生信息 (3)查找显示所有年龄大于20岁的学生名单 package a.b.c; public class Student{ int num; int age; String name; public String toString(){ return "学号: +num+",姓名:"+name+",年龄:"+age"; } public Student (int Num,int Age,int Name){ num=Num;

java数组练习题目

一填空题 1)数组的元素通过来访问,数组Array的长度为。 2)数组复制时,"="将一个数组的传递给另一个数组。 3)没有显式引用变量的数组称为数组。 4)JVM将数组存储在 (堆或栈)中。 5)数组的二分查找法运用的前提条件是数组已经。 6)矩阵或表格一般用维数组表示。 7)如果把二维数组看成一维数组,那么数组的元素是数组。 8)Java中数组的下标的数据类型是。 9)不用下标变量就可以访问数组的方法是。 10)数组最小的下标是。 11)arraycopy()的最后一个参数指明。 12)向方法传递数组参数时,传递的是数组的。 13)线性查找法的平均查找长度为。 14)数组初始化包括。 15)数组下标访问超出索引范围时抛出异常 16)浮点型数组的默认值是。 17)对象型数组的默认值是。 18)对象类型的数组虽然被默认初始化,但是并没有构造函数。 19)二维数组的行的长度不同。 20)数组创建后其大小改变。 二选择题 1.下面错误的初始化语句是___ A. char str[]="hello"; B. char str[100]="hello"; C. char str[]={'h','e','l','l','o'}; D. char str[]={'hello'}; 2.定义了一维int型数组a[10]后,下面错误的引用是___ 3. A. a[0]=1; B. a[10]=2; C. a[0]=5*2; D. a[1]=a[2]*a[0]; 4.下面的二维数组初始化语句中,正确的是____ 5. A. float b[2][2]={,,,}; B. int a[][]={{1,2},{3,4}}; 6. C. int a[2][]= {{1,2},{3,4}}; D. float a[2][2]={0}; 7.引用数组元素时,数组下标可以是____ 8. A. 整型常量 B. 整型变量 C. 整型表达式 D. 以上均可 9.定义了int型二维数组a[6][7]后,数组元素a[3][4]前的数组元素个数为____ A. 24 B. 25 C. 18 D. 17 10.下列初始化字符数组的语句中,正确的是____ 11.A. char str[5]="hello"; B. char str[]={'h','e','l','l','o','\0'}; 12.C. char str[5]={"hi"}; D. char str[100]="";

Java理论作业(5章)

班级: 学号: 姓名: 第五章 数组与字符串 知识点一:Java 的内存分配机制 内存分配:栈内存、堆内存。 栈内存:基本数据类型的变量和对象的引用变量。超出变量的作用域,会自动释放掉为该变量所分配的内存空间。 堆内存:存放由new 运算符创建的对象和数组,在堆中分配的内存,由Java 虚拟机的自动垃圾回收器来管理。 举例:int [ ] x; x=new int[10]; 第一句:引用变量x ,在栈内存中分配空间 第二句:数组初始化,在堆内存中分配空间 栈中的变量x 的取值= 数组在堆内存中的首地址,所以栈中的这个变量就成了数组的引用变量。 举例 String s1; String s2; s1=“a string ”; s2=s1; 引用变量实际上保存的是数组或对象在堆内存中的地址(也称为对象的句柄),所以可以通过使用栈的引用变量来访问堆中的数组或对象。 引用变量相当于是为数组或对象起的一个别名。 引用变量是普通变量,定义时在栈中分配,在程序运行到其作用域之外被释放。 数组或对象:在堆中分配内存,在没有引用变量指向它时,也不会释放,但会变为垃圾,不能再被使用。在随后一个不确定的时间被垃圾回收器收走(释放)。 null :引用常量,如果某个引用变量值为null ,表示不指向任何对象或数组。 知识点二:一维数组 数组:相同数据类型的元素按一定顺序排列的集合,实现对这些数据的统一管理。 声明方式 type var[] 或 type[] var ; type 指定数组的类型,可以是基本数据类型,也可以是一个类类型(即类名),如 int a[]; int[] a1; double b[]; s1 s2 10001 a string 10001 栈内存 堆内存

Java课后习题答案第五章

。 第5章 1.以下叙述中不正确的是______。 A、在方法中,通过return语句传回方法值 B、在一个方法中,可以执行有多条return语句,并返回多个值 C、在Java中,主方法main()后的一对圆括号中也可以带有参数 D、在Java中,调用方法可以在System.out.println()语句中完成 B 2.以下正确的描述是______。 A、方法的定义不可以嵌套,但方法的调用可以嵌套 B、方法的定义可以嵌套,但方法的调用不可以嵌套 C、方法的定义和方法的调用均不可以嵌套 D、方法的定义和方法的调用均可以嵌套 A 3.以下正确的说法为______。 A、在不同方法中不可以使用相同名字的变量 B、实际参数可以在被调方法中直接使用 C、在方法内定义的任何变量只在本方法范围内有效 D、在方法内的复合语句中定义的变量只在本方法语句范围内有效 C 4.按Java语言的规定,以下正确的说法是______。 A、实参不可以是常量,变量或表达式 B、形参不可以是常量,变量或表达式 C、实参与其对应的形参占用同一个存储单元 D、形参是虚拟的,不占用存储单元 D 5.一个Java Application程序中有且只有一个方法,它是整个程序的执行入口。 main()方法

6.方法通常可以认为由两部分组成,它们是和。 方法头和方法体 7.读程序写结果。 public class Test { static void m(int x, int y, int z) { x=111; y=222; z=333; } public static void main(String args[ ] ) { int x=100, y=200, z=300; m(x, y, z); System.out.println(“x=”+x+”y=”+y+”z=”+z); } } x=100y=200z=300 8.编写一个判断某个整数是否为素数的方法。 public boolean prime(int x) { for(int j=2;j

java中数组常见的排序问题整理

本文由我司收集整编,推荐下载,如有疑问,请与我司联系 java 中数组常见的排序问题整理 2016/03/13 0 span > 1.选择排序:选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的 起始位置,直到全部待排序的数据元素排完。选择排序是不稳定的排序方法。 如图所示:数组array 有5 个元素 首先,array[0]与array[1]比较大小,如果array[0] array[1],则将两元素互换位置,然后再将array[0]与array[2]进行比较,一次进行下去,当第一轮循环完成,则 array[0]是数组中最小的元素。然后开始拿array[1]与array[2]进行比较,依次下去, 比较到最后即可。 程序代码实现如下: public void SelectionSort(int[] array){for(int i=0;i array.length-1;i++){for(int j=i+1;j array.length;j++){int temp;if(array[i] array[j]){temp = array[i];array[i]=array[j];array[j]=temp;}}}}2.冒泡排序:它重复地走访过要排序的数 列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作 是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。下面用一张图 来详细说明冒泡的原理。如图: 数组array 有五个元素,int[] array={7,5,12,9,2}; 第一步还是和选择排序一样,先是array[0]和array[1]进行比较,如果array[0] array[1],两个元素互换位置,即array[0]=5,array[1]=7;第二步,array[1]和array[2]进行比较大小,array[1] array[2],位置不变;第三步,array[2]和array[3]比较,array[2] array[3],位置互换;array[3]与array[4]比较,array[3] array[4],位置互换,第一轮循环结束,我们会发现,数组的最后一个元素是数组中最大的。第一轮循环完成后的数 组变成如下图所示: 接下来继续又从array[0]和array[1]开始比较,重复下去。第一轮比较得出了最

java各种数组排序(插入,交换,选择,归类,基数排序)

import java.util.Random; /** * * * 排序算法的分类如下: * 1.插入排序(直接插入排序、折半插入排序、希尔排序); * 2.交换排序(冒泡泡排序、快速排序); * 3.选择排序(直接选择排序、堆排序); * 4.归并排序; * 5.基数排序。 * * 关于排序方法的选择: * (1)若n较小(如n≤50),可采用直接插入或直接选择排序。 * 当记录规模较小时,直接插入排序较好;否则因为直接选择移动的记录数少于直接插人,应选直接选择排序为宜。 * (2)若文件初始状态基本有序(指正序),则应选用直接插人、冒泡或随机的快速排序为宜; * (3)若n较大,则应采用时间复杂度为O(nlgn)的排序方法:快速排序、堆排序或归并排序。 * * */ public class SortTest { /** * 初始化测试数组的方法 * @return 一个初始化好的数组 */ public int[] createArray() { Random random = new Random(); int[] array = new int[10]; for (int i = 0; i < 10; i++) { array[i] = random.nextInt(100) - random.nextInt(100);//生成两个随机数相减,保证生成的数中有负数 }

System.out.println("-----------原始序列-----------------"); printArray(array); return array; } /** * 打印数组中的元素到控制台 * */ public void printArray(int[] source) { for (int i : source) { System.out.print(i + " "); } System.out.println(); } /** * 交换数组中指定的两元素的位置 * * * */ private void swap(int[] source, int x, int y) { int temp = source[x]; source[x] = source[y]; source[y] = temp; } /** * 冒泡排序----交换排序的一种 * 方法:相邻两元素进行比较,如有需要则进行交换,每完成一次循环就将最大元素排在最后(如从小到大排序),下一次循环是将其他的数进行类似操作。 * 性能:比较次数O(n^2),n^2/2;交换次数O(n^2),n^2/4 * * @param source 要排序的数组 * @param sortType 排序类型

java排序算法大全

java排序算法大全 为了便于管理,先引入个基础类: package algorithms; public abstract class Sorter> { public abstract void sort(E[] array,int from ,int len); public final void sort(E[] array) { sort(array,0,array.length); } protected final void swap(E[] array,int from ,int to) { E tmp=array[from]; array[from]=array[to]; array[to]=tmp; } } 一插入排序 该算法在数据规模小的时候十分高效,该算法每次插入第K+1到前K个有序数组中一个合适位置,K从0开始到N-1,从而完成排序: package algorithms; /** * @author yovn */ public class InsertSorter> extends Sorter { /* (non-Javadoc) * @see algorithms.Sorter#sort(E[], int, int) */ public void sort(E[] array, int from, int len) { E tmp=null; for(int i=from+1;ifrom;j--) { if(https://www.doczj.com/doc/732570585.html,pareTo(array[j-1])<0) { array[j]=array[j-1]; } else break;

java排序123

java排序123 为了便于管理,先引入个基础类: package algorithms; public abstract class Sorter> { public abstract void sort(E[] array,int from ,int len); public final void sort(E[] array) { sort(array,0,array.length); } protected final void swap(E[] array,int from ,int to) { E tmp=array[from]; array[from]=array[to]; array[to]=tmp; } } 一插入排序 该算法在数据规模小的时候十分高效,该算法每次插入第K+1到前K个有序数组中一个合适位置,K从0开始到N-1,从而完成排序: package algorithms; /** * @author yovn */ public class InsertSorter> extends Sorter { /* (non-Javadoc) * @see algorithms.Sorter#sort(E[], int, int) */ public void sort(E[] array, int from, int len) { E tmp=null; for(int i=from+1;ifrom;j--) { if(https://www.doczj.com/doc/732570585.html,pareTo(array[j-1])<0) { array[j]=array[j-1]; } else break;

Java在原数组中插入一个元素,并按升序排列

Java在原数组中插入一个元素,并按升序排列 1.效果图 2.源代码 package LianXi; import java.util.Arrays; import java.util.Scanner; public class ChanRuYuanSu { /** @描述: * @方法名称:main---->shangji_3_p162_.java * @作者:Java - wangzhe * @创建日期:2016-6-26下午06:08:01 * @param args * @param args */ public static void main(String[] args) { Scanner input = new Scanner(System.in); //原数组 int num[]=new int[]{1,4,6,8}; //新建数组 int nums[]=new int [num.length+1]; //将原数组排序 Arrays.sort(num); //遍历原数组至新数组 for (int i = 0; i < num.length; i++) { nums[i]=num[i]; } //友好提示要插入的新数字 System.out.print("请输入您要插入的新数字:");

//接受用户输入 int num1= input.nextInt(); //插入的数组在新数组中的下标 int index =num.length; //for循环遍历找到要插入数字的下标 for (int i = 0; i < nums.length; i++) { if (num1 index; j--) { nums[j] = nums[j-1]; } //插入数字 nums[index] = num1; //for循环遍历输出新数组 //插入后的数组为 System.out.println("插入后的数组为:"); for (int k = 0; k < nums.length; k++) { System.out.print(nums[k]+""); } } }

java类实现数组的冒泡选择插入希尔等五种排序

public class Sort_Suan { /** *@param args *对数组进行排序冒泡排序、选择排序、插入排序、希尔排序、数组排序*五种排序的方法 */ public static void main(String[] args) { // TODO Auto-generated method stub int a[] = new int[7]; a[0]=12; a[1]=8; a[2]=5; a[3]=6; a[4]=9; a[5]=4; a[6]=11; int temp; System.out.print("这是原数组:"); for(int n:a){ System.out.print("n="+n+" "); } /** *冒泡排序: *具体实现如下: **/ for(int mi=0;mia[mj]){ temp=a[mi]; a[mi]=a[mj]; a[mj]=temp; } } } System.out.println(); System.out.print("这是冒泡排序:"); for (int n:a) { System.out.print("n="+n+" "); } /** *选择排序: *具体如下: */ for(int xi=0;xi

for(int xj=xi+1;xj0)&&(a[cj]0;increment/=2){ for (int si = increment; si < a.length; si++) { temp=a[si]; for (int sj = si; sj >=increment; sj-=increment) { if(temp

相关主题
文本预览
相关文档 最新文档