Java学习笔记 四(有关方法、数组,点点二分和快排算法)

一,方法:类似于函数,可被多次执行;

                定义结构:修饰符 返回值类型 方法名(参数表){执行语句;return 返回值;}

                参数表是用于描述方法在被调用时需要接收的参数,如果方法不需要参数,则参数表为空;方法的返回值必须为方法声明的返回值类型,如果没有返回值,返回值类型要声明为void,此时,方法中的return语句可以省略。

               重载:与C++、C#类似,简单来说,重载就是方法名相同,参数表不同,与返回值无关;通过传入的参数来确定调用哪个重载的方法。

               递归:再简单来说就是方法自身调用方法本身以达到递归的效果。

二,数组:定义格式:int [] x=new int [10];

                 获取数组长度的函数为length,通过“数组名.length”来获取,该长度为数组中元素个数;

当数组创建好后还未赋值时,该数组元素的值并非像C,C++,C#中的那样是地址,而是一个固定的值,这是因为在Java中当数组创建成功后,系统会自动为其赋上初始默认值,特定的数据类型有特定的默认值;

多维数组:定义格式:int [] [] x=new int [] [];(动态初始化);int [] [] x=new int [] {…};(静态);int [] [] x={{…},{…},{…}};(静态);多维数组的使用方法没有多大的变化,就不赘述了!

                最值、排序:两个都用到了for循环体,书中的寻找最值方法,通过for循环一个一个地比较,效率太低,用折半查找的方法会快很多;排序也是,书中的冒泡也是效率比较低的方法,但是也简单易懂好上手,用快排可以大大缩短排序时间;

 

二分查找:       

public static int binSearch(int srcArray[], int start, int end, int key) 
{  
int mid = (end - start) / 2 + start;   
if (srcArray[mid] == key) { return mid; }   
if (start >= end) { return -1; }     
else if (key > srcArray[mid])    
{ return binSearch(srcArray, mid + 1, end, key); }       
else if (key < srcArray[mid])   
{ return binSearch(srcArray, start, mid - 1, key); }        
return -1; 
} (实现了递归的二分)

//二分查找使用了分治法的思想,找一个点将整个数组一分为二,移动前后指针实现快速寻找目标。

 

 

 

快排:

public static int partition(int []array,int l,int hi)
{ 
int key=array[l];   
while(l<hi){         
      while(array[hi]>=key&&hi>l){//从后半部分向前扫描 hi--; }           
      array[l]=array[hi];          
      while(array[l]<=key&&hi>l){从前半部分向后扫描 l++; }           
      array[hi]=array[l]; }      
array[hi]=key; 
return hi; 
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值