第一篇:Java排序总结
倒叙排序
第一种利用一个数组来盛放后,再来倒叙输出 public class daoxu {
} 第二种利用一个变量来转换后,倒序输出 public class daoxu {
public static void main(String[] args{ int[] arr[] ={2,4,6,87,13,15};for(int i = 0;i < arr.length/2;i++){ int temp = arr[i];public static void main(String[] args){
int[] arr ={2,4,6,8,7,1,3};int[] num =new int[arr.length];for(int i = 0;i < arr.length;i++){
}
} } for(int i = 0;i < num.length;i++){ System.out.print(“ ”+num[i]+“ ”);num[i] = arr[arr.length1];num[arr.length1] = arr[i];
arr[i] =arr[arr.length-i-1 ];
arr[arr.length-i-1] =temp;
} for(int i = 0;i < arr.length;i++){
System.out.print(arr[i] +“ ”);} } }
冒泡排序(1.是将其升序排布)
public class maopao { public static void main(String[] args){
int[] arr = {2,5,8,9,1,0,25};
for(int i = 0;i < arr.length;i++){ for(int j = 0;j < arr.length-i-1;j++){
//2.arr[j+1] > arr[j],则其会降序输出
if(arr[j+1] int temp = arr[j]; 如果将其 } } } } arr[j] = arr[j+1];arr[j+1] = temp;} for(int i = 0;i < arr.length;i++){ } System.out.print(arr[i]+“ ”);升序排列 import java.util.Arrays; public class shengxu { public static void main(String[] args){ int[] arr = {1,5,0,2,10,4,78,9};Arrays.sort(arr);for(int i = 0;i < arr.length;i++){ } System.out.print(arr[i]+“ ”);} } 降序排列 第一种先升序再降序 import java.util.Arrays;public class jiangxu { } 第二种利用冒泡排序,然后再将其反向输出 public class maopao { public static void main(String[] args){ } int[] arr ={2,4,6,8,0,1,3,15,89,5};Arrays.sort(arr);for(int i = 0;i < arr.length/2;i++){ } for(int i = 0;i < arr.length;i++){ } System.out.print(arr[i]+“ ”);int temp = arr[i];arr[i]=arr[arr.length-i-1];arr[arr.length-i-1]= temp; } public static void main(String[] args){ } } for(int i = arr.length-1;i >=0;i--){ } System.out.print(arr[i]+“ ”);int[] arr = {2,5,8,9,1,0,25};for(int i = 0;i < arr.length;i++){ for(int j = 0;j < arr.length-i-1;j++){ } if(arr[j+1] } int temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;第三种利用冒泡排序的倒叙输出 public class maopao { public static void main(String[] args){ int[] arr = {2,5,8,9,1,0,25};for(int i = 0;i < arr.length;i++){ } } for(int j = 0;j < arr.length-i-1;j++){ } if(arr[j+1]>arr[j]){ } int temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;} for(int i = 0;i JAVA四种基本排序,包括冒泡法,插入法,选择法,SHELL排序法.其中选择法是冒泡法的改进,SHELL排序法是 插入法的改进.所以从根本上来说可以归纳为两种不同的排序方法:即:插入法&冒泡法 一 插入法:遍历排序集合,每到一个元素时,都要将这个元素与所有它之前的元素遍历比较一遍,让符合排序顺序的元素挨个移动到当前范围内它最应该出现的位置。交换是相邻遍历移动,双重循环控制实现.这种排序法属于地头蛇类型,在我的地牌上我要把所有的东西按一定的顺序规整,过来一个,规整一个.处理代码如下: public void sort(int[] data){ int temp; for(int i=1;i〈data.length;i++){ for(int j=i;(j〉0)&&(data[j]〉data[j-1]);j--){ temp=date[j];data[j]=data[j-1];data[j-1]=temp;} } } 二冒泡法:比较容易,它的内层循环保证遍历一次后,集合中最小(大)元素出现在它的正确位置,下一次就是次小元素。。该方法在集合分布的各种情况下交换移动的次数基本不变,属于最慢的一种排序。实现也是双重循环控制。这种排序法属于过江龙,就是要找到极端,但是过奖龙也有大哥,二哥等,所以他们只能是大哥挑了二哥挑.处理代码如下: public static int [] maopao(int[] data){ int temp; for(int i=0;i〈data.length-1;i++){ for(int j=i+1;j〈data.length;j++〉{ if(data[i]〈data[j]〉{ temp=data[i];data[i]=data[j];data[j]=temp;} 〉 〉 return data; 三选择法:该方法只是通过遍历集合记录最小(大)元素的位置,一次遍历完后,再进行交换位置操作,类似冒泡,但在比较过程中,不进行交换操作,只记录元素位置。一次遍历只进行一次交换操作。这个对与交换次序比较费时的元素比较适合。这种排序法比冒泡法要城府要深的多,我先记住极端数据,待遍历数据完了之后,我再处理,不像冒泡法那样只要比自己极端一点的就要处理,选择法只处理本身范围内的最极端数据.public static void xuanze(int[] data){ int temp; for(int i = 0;i 〈 data.length;i++〉 { int lowIndex = i; for(int j = data.length-1;j)i;j--){ if(data[j])data[lowIndex]){ lowIndex = j;} } temp=data[i]; data[i]=data[lowIndex];data[lowIndex]=temp;} } 四 Shell排序: 它是对插入排序的一种改进,是考虑将集合元素按照一定的基数划分成组去排序,让每一组在局部范围内先排成基本有序,最后在进行一次所有元素的插入排序。public void sort(int[] data){ for(int i=data.length/2;i)2;i/=2){ for(int j=0;j〈i;j++〉{ insertSort(data,j,i);} 〉 insertSort(data,0,1);〉 private void insertSort(int[] data, int start, int inc){ int temp; for(int i=start+inc;i〈data.length;i+=inc〉{ for(int j=i;(j)=inc)&&(data[j]〈data[j-inc]〉;j-=inc〉{ temp=data[j];data[j]=data[j-inc] data[j-inc]=temp;} 〉 〉 /*选择排序*/ public class SelectSort2 { public static void sort(int[] tempArr){ for(int i =0;i { /* 当初错误认为此处与冒泡排序极为相像,甚至觉得选择排序与冒泡排序毫无差别,其实相反,冒泡循环意味着每一次 循环都会将相邻的两个数比较这样每次都会排出数组中最大或最小的数。然后再次执行外层循环,再继续进入内层循环 再依次进行比较。 选择排序则是,第一次循环:咬定第一个数角标i=0的元素,依次与后面的元素比较,将最小或最大的数排出来,再进入 外层的第二次循环,并且此时咬定的数为角标为1的元素,但因为之前已将全数组中最小或最大的数排出所以没有必要再 与数组中角标为零得数比较 而是通过 j=i+1 将待比较的角标变成[ 2、3、...、tempArr.length)。 */ for(int j =i+1;j { if(tempArr[i]>tempArr[j]) { int temp = tempArr[i]; tempArr[i] = tempArr[j]; tempArr[j] = temp; } } } } public static void arrPrint(int[] tempArr){ System.out.print(“[”); for(int i = 0;i { if(i!= tempArr.length-1) { System.out.print(tempArr[i]+“,”); } else { System.out.println(tempArr[i]+“]”); } } } public static void main(String args[]){ int[] arr = new int[]{10,2,-7,8,1,12,6,7,9,3};arrPrint(arr);sort(arr);arrPrint(arr);} } /*冒泡排序*/ public class MpSort2 { public static void sort(int[] tempArr){ for(int i = 0;i { for(int j = 0;j { if(tempArr[j]>tempArr[j+1]) { int temp = tempArr[j]; tempArr[j] = tempArr[j+1]; tempArr[j+1] = temp; } } } } public static void arrPrint(int[] tempArr){ System.out.print(“[”); for(int i = 0;i { if(i!= tempArr.length-1) { System.out.print(tempArr[i]+“,”); } else { System.out.println(tempArr[i]+“]”); } } } public static void main(String[] args){ int[] arr = new int[]{10,2,-7,8,1,12,6,7,9,3}; arrPrint(arr); sort(arr); arrPrint(arr);} } 在这忙忙碌碌的这段时间里,经过老师的辅导,迅速的将一点没有学的JAVA基础搞定了!有了基础学习还是好,万事开头难这句话说的太对了,学计算机语言我觉得记忆好的方法就是多打代码,课前预习,课堂上认真听讲,把现学的方法把以前所做的作业用最简便的方法再一次巩固,创新最重要,在后续的学习中,得要加倍努力学习。 其实学java有不懂,要先自己思考。想清楚这句代码是什么意思。为什么要写在这,等等之类的。等你真的搞不明白的时候,就一定要向老师咨询,不要感到有什么丢人的。因为不会是很正常的事。并不是每个人都是天才,一学就会,一学就能运用自如的。学java有一点是非常重要的,就是练习。一段代码要不停的敲,多敲几遍,尤其是自己不熟悉或者不熟练的代码,更要敲。不要感觉到厌烦,其实我感觉敲代码挺好玩的,并不是一件很枯燥的事。 老师平常布置的课后上机练习题一定要做,课后的练习题能够让你把新学到的知识巩固一遍,能够加深记忆,不会让你在以后做题的时候感到没一点思路。 当感觉到不会的时候,千万不要气馁,因为这很正常,现在的学习就是为了培养你有一个逻辑思维,为了以后开发软件的时候有个完整,清晰的思路。 其实,总体来说。学习java很快乐。尤其是当你遇到一道自己不会的题,然后,又通过自己的努力解决了,那时候,那种心情不是用言语来表达的。就好像你遇到一个数学难题,自己解决了之后那种成就感一样。 学java的时候一定要,放松心情,轻轻松松的来学,随时让自己快乐着,这样能够让你能够更快的接受java,千万不要有什么心理负担,因为java的特点之一就是--简单易懂。只要自己努力到了,就一定能够学好java。 学完了JAVA今天我们用项目案例:迷你DVD管理器来巩固了我们所学的所有内容,通过这项目的操练,首先,1、项目用到了会使用顺序、分支、循环、跳转语句编写程序,2、要会使用数组、操作字符串,3、会使用带参的方法; 4、会定义类、创建和使用对象,看到这些脑袋里一片迷茫啊!不知道怎样写,然后想到早写晚写都一样,就照着书上写起来了,到现在还是弄不懂的就是那个对象数组,不知道怎样去理解,抽象的把我抽晕了,有望老师来给我们补补这一章,在实现DVD的业务处理时,计算时差还是不懂,照着书上打了一遍,可还是得不到想要的结果,经过网上的搜寻与老师讲解,现在已略懂一二了,在做完这项目后,真不知道当时是怎样敲出来的,难道这就是所说的灵感!感觉很高兴,现在已习惯了代码报错,其实代码报错是一件值得鼓励的事,因为没有错就觉得自己什么都懂了,在学习中相信每一个人都遇到过挫折吧!但一定要想方法战胜挫折!我的战胜挫折方法就是不懂思考后还不懂就问,懂了以后就笔记本记下当时的解决方案!学习刚开始!后面的路很长,慢慢的去磨炼了!总结完毕! Java实验 1.调试HelloWorld程序 2.this,super,get ,set,把课本90页程序4.7中的name改成私有变量 3.继承,重写,父类引用指向子类对象 4.验证数组Arrays类和Collection类 5.编写一个自己的异常类并捕获之。 6.编写一个类,将该类的几个对象装入TreeSet容器中,并将该容器的内容通过输出流写入文件中。 前三章重点 0.java的数据类型:四类八种-(1)布尔类型Boolean;(2)字符类型char;(3)整数byte,short,int,long;(4)浮点类型:float,double;1.面向对象的3个基本特征:封装,继承,多态。 2.构造方法和普通方法的区别:对构造方法而言,它有以下特性---(1)方法名必须与要创建对象的类名相同。(2)不允许声明返回类型,即使声明为void也不被允许。 3.this关键字:是一个引用,this引用指向的是其本身所在方法的当前对象。this的使用方法:(1)调用成员变量;(2)可以用this()调用其他构造函数。 4.java中只对类成员变量进行自动初始化,而方法内部的局部变量在使用前必须手动初始化。 5.static 关键字:可用来修饰类的成员变量和成员方法,需要注意两点--(1)静态方法不能调用类的非静态方法,不能访问类的非静态变量。(2)静态方法和静态变量(非私有的)可以有两种调用方式,一是实例对象调用,二是类名直接调用。 6.类成员访问控制修饰符public、private、default(可不写,即缺省状态)、protected的使用:public-公用的;private-私有的,只在定义它的类内部使用;default-可以被同一包中的类访问;protected-既可以被同一包中的类访问,也可以被不在同一包中的子类访问。 7.方法的重载:指方法名相同,而方法的参数列表不相同。参数列表不同有三层意思:(1)参数类型不同。(2)参数顺序不同。(3)参数个数不同。另外需注意,在同一个类中,当方法名和参数列表都相同时,访问控制修饰符或方法返回类型不相同并不是方法的重载,而且这种情况在java中是不被允许的。 第四五章重点 1.继承:需使用关键字extends.在使用继承时需注意--(1)每个子类只能定义一个超类(父类),即extends后面应且仅应跟一个类名作为该类的父类。(2)父类中的私有属性和私有方法不能被继承。 2.方法的重写:即子类对超类中的方法保持方法名、返回类型和参数列表不变,重写了方法体,使子类和超类完成不同的工作。重写需注意下面几个关键点:(1)超类中的私有方法不能被重写。(2)访问限制符强度由低到高依次是:public、protected、default、private,在重写过程中,如果子类和父类中方法的返回值、方法名及方法的参数列表都相同,这时,要求子类中该方法的访问限制符强度不能超过父类的。即如果父类中为public时,子类也只能为public,而不能是余下的三种。 3.重载(overload)和覆盖(override)的区别:(1)重载—发生在一个类的内部或子类与父类之间,要求方法名相同而参数列表不一样。(2)覆盖—只能发生在继承过程中,要求子类方法的返回类型,方法名和参数列表同父类的都相同,而方法体不一样。 4.构造器的调用顺序:先祖先,再客人,最后自己。 5.多态:指在类继承中子类和父类中可以有同名但意义或实现方式不同的属性和方法。分为:覆盖和重载。多态的优点:因为多态,可以在程序中对类进行扩展,而不需改变那些操作基类接口的方法。 6.动态绑定:指在代码执行期间,判断所引用对象的实际类型,根据其实际类型调用相应方法。动态绑定存在的三个必要条件--(1)要有继承;(2)要有重写(覆盖);(3)父类引用指向子类对象(向上转型)。 7.Object中常用的方法总结:toString();wait();equals();notify();notifyAll();hashCode();getClass();clone();finalize();(呵呵,尽可能记几个,以防老师让咱们列举)注:java中Object类是所有类的父类,即java中所有的类都有上述9种方法。 8.对象的比较:注意关键字instanceof的使用。 9.抽象类: 抽象方法—用关键字abstract修饰的方法,该方法只需方法的声明,而不需方法的实现(即无方法体)。 抽象类——至少包含一个抽象方法的类,也用abstract关键字声明。(注:(1)抽象类中可以有一些具体方法。(2)抽象类不能实例化。(3)子类继承抽象类必须实现其抽象方法。) 10.接口: (1)可以看成是高度抽象的抽象类,但是接口不是类。 (2)用关键字interface来声明接口,用关键字imlpements来实现接口。 (3)接口不能有具体方法,不能有实例数据,但可以定义常量。 (4)实现接口的非抽象类必须实现接口的所有方法。 (5)每个类可以实现多个接口,这些接口用逗号隔开,同时,一个接口可以被多个类实现。 第六章:重点看一下实验四 1.容器——Collection(接口)和Map(接口).Collection——Set(接口)和List(接口)。其中,List必须保持元素的特定顺序,常见的实现类有ArrayList和LinkedList;Set不能有重复元素,常见的实现类有HashSet和TreeSet。 Map——一组成对的“键值对”对象,即其元素是成对的对象,常见的实现类有HashMap和TreeMap。 第七章 1.异常类的根类是Throwable类,它的两个直接子类是Error类和Exception类。 2.异常中常用的5个关键字为:try,catch,finally,throw,throws.其中,try和catch:用于捕获异常;finally:无论try块中的异常是否抛出,finally中的代码块总能被执行;throw:抛出异常;throws:声明异常。 3.“未被检查的异常(Unchecked Exceptions)”和“受检查的异常(Checked Exceptions)”—— Unchecked Exceptions :编译器不检查方法是否处理或抛出的异常,即不做处理,编译时不报错。 Checked Exceptions:受编译器检查的异常,即不做处理编译时通不过。 4.常见的几种Checked Exceptions:ClassNotFoundExceptionIOExceptionInterruptedExceptionFileNotFoundException.(尽可能的记几个吧,以防不测)第八章 1.流--字节流和字符流; 流--节点流和处理流。 2.所有的输入流都是从抽象类InputStream和Reader继承而来。所有输出流都是从抽象类OutputStream和Writer继承而来。3.字节流:InputStream和OutputStream;字符流:Reader和Writer; 4.节点流:直接与文件等底层打交道,如FileInputStreamFileOutputStreamFileReaderFileWriter.处理流:相当于包装流,套在节点流上,方便数据处理。相关一些用法,具体参考最后一次实验。第二篇:JAVA四种基本排序的总结
第三篇:冒泡排序及选择排序Java实现心得
第四篇:JAVA总结专题
第五篇:Java总结