java的基础学习(2)

抽象类:

抽象类不能被实力化。抽象类不一定要包含abstract方法,也可以有实现方法。但是一旦含有abstract方法,这个类声明必须为abstract。抽象类不能有主体,即实现过程。

接口:

是特殊的抽象类,接口不能被实例化,接口中所有方法都不能有主体。一个类可以实现多个接口。由于接口中的变量本质上是static和final的,做全局变量,定义时需赋初值,不能用protected和private修饰,访问方式:接口名.变量名。接口不能继承其他类,但可以继承其他接口。

Final的注意事项:

Final修饰的变量又称为常量,定义的时候必须赋值,且之后不能再赋值

Final什么时候用:

出于安全考虑,类的某个方法不允许修改;最为最终类,不能再被继承;父类的某个方法不希望被子类覆盖时,需要加上final修饰;某些变量值是固定的,不允许被修改时,如圆周率。

一维数组的定义:

数据类型  数组名[]=new 数据类型[数量];

如:int  a[]=new int[5];

 

排序算法:

/*

 * 作者:

 * 时间:2016.7

 * 功能:冒泡排序,快速排序,插入排序,选择排序

 *

 */

package com.xiaoming;

import java.util.*;

public class Test {

 

         public static void main(String[] args) {

                   // TODO Auto-generated method stub

                   //int arr[]={1,6,0,-9,-1};

                   int len=10;

                   int[] arr1=new int[len];

                   for(int i=0;i<len;i++)

                   {

                            //随机产生1-1000之间的数

                            int t=(int)(Math.random()*1000);

                            arr1[i]=t;

                   }

                  

                   //创建Bubble类

                   System.out.println("冒泡排序");

                   Bubble bubble=new Bubble();

                   bubble.sort(arr1);

                   //输出最后结果

                   for(int i=0;i<arr1.length;i++)

                   {

                            System.out.print(arr1[i]+"  ");

                   }

                  

                   //插入排序

                   System.out.println("插入排序");

                   InsertSort ins=new InsertSort();

                   ins.sort(arr1);

                   //输出最后结果

                   for(int i=0;i<arr1.length;i++)

                   {

                            System.out.print(arr1[i]+"  ");

                   }

                  

                   //快速排序

                   System.out.println("快速排序");

                   QuickSort qs=new QuickSort();

                   qs.sort(0, arr1.length, arr1);

                   //输出最后结果

                   for(int i=0;i<arr1.length;i++)

                   {

                            System.out.print(arr1[i]+"  ");

                   }

                  

                   ///选择排序

                   System.out.println("选择排序");

                   Select select=new Select();

                  select.sort(arr1);

                   //输出最后结果

                   for(int i=0;i<arr1.length;i++)

                   {

                            System.out.print(arr1[i]+"  ");

                   }

                  

                   //打印系统时间

                   /*Calendar cal=Calendar.getInstance();

                   System.out.println("排序前:"+cal.getTime());

                   select.sort(arr1);

                   //重新获得时间,因为是单态模式     

                   cal=Calendar.getInstance();

                   System.out.println("排序后:"+cal.getTime());

                   */

                  

         }

}

 

//冒泡排序

class Bubble

{

         public void sort(int arr[])

         {

                   //冒泡排序

                                     int temp=0;

                                     //外部循环,决定走几趟

                                     for(int i=0;i<arr.length-1;i++)

                                     {       

                                               //内部循环,比较大小,交换

                                               for(int j=0;j<arr.length-1-i;j++)

                                               {

                                                        if(arr[j]>arr[j+1])

                                                        {

                                                                 temp=arr[j];

                                                                 arr[j]=arr[j+1];

                                                                 arr[j+1]=temp;

                                                        }

                                               }

                                     }

                                    

                   }

 }

 

//选择排序

class Select

{

         public void sort(int arr[])

         {

                   int temp=0;

                   for(int i=0;i<arr.length;i++)

                   {

                            //认为第一个数最小,每轮找出最小的一个数排在前面

                            int min=arr[i];

                            int minIndex=i;

                            for(int j=i+1;j<arr.length-1;j++)

                            {

                                     if(min>arr[j])

                                     {

                                               min=arr[j];

                                               minIndex=j;

                                     }

                            }

                            //当退出for循环就找到最小值

                            temp=arr[i];

                            arr[i]=arr[minIndex];

                            arr[minIndex]=temp;

                           

                   }       

         }       

}

 

//插入排序

class InsertSort

{

         public void sort(int arr[])

         {

                   for(int i=1;i<arr.length;i++)

                   {

                            int insertVal=arr[i];

                            //insertVal准备和前一个数比较

                            int index=i-1;

                            while(index>=0&&insertVal<arr[index])

                            {

                                     //把arr[Index]向后移动

                                     arr[index+1]=arr[index];

                                     //index向前移动

                                     index--;    

                            }

                            //将insertVal插入到适当位置

                            arr[index+1]=insertVal;

                   }

         }

}

 

//快速排序

class QuickSort

{

         public void sort(int left,int right,int array[])

         {

                   int l=left;

                   int r=right;

                   int pivot=array[(left+right)/2];

                   int temp=0;

                   while(l<r)

                   {

                            while(array[l]<pivot) l++;

                            while(array[r]>pivot) r--;

                           

                            if(l>=r)  break;

                            temp=array[r];

                            array[r]=array[l];

                            array[l]=temp;

                           

                            if(array[l]==pivot) --r;

                            if(array[r]==pivot) ++l;

                   }

                   //System.out.println("the current array is: ");

                   if(l==r)

                   {

                            l++;

                            r--;

                   }

                   if(left<r)  sort(left,r,array);

                   if(right>l) sort(l,right,array);

         }

}

posted @ 2016-07-17 13:15  佛图  阅读(158)  评论(0编辑  收藏  举报