08 基本元素 数组和指针
2015-06-30 13:34
239 查看
重点在于循环嵌套的理解和使用
排序:
选择冒泡 二分法
选择:
class ArrayTest1
{
publicstatic void main(String[] args)
{
int[]arr = {5,1,6,4,2,8,9};
intmax = 0;
inttemp;
for(int x = 0; x<arr.length-1 ; x++ )
{
for(int y = x+1 ; y <arr.length ; y++ )
{
if(arr[y]>arr[x])
{
temp= arr[y];
arr[y]= arr[x];
arr[x]= temp;
}
}
}
for(int a : arr )
{
sop(a);
}
}
publicstatic void swap(int a , int b) //注意 这个函数是没有效果的
{
inttemp;
temp= a;
a= b;
b=temp;
}
publicstatic void sop(Object obj)
{
System.out.println(obj);
}
}
冒泡
class ArrayTest2
{
publicstatic void main(String[] args)
{
int[]arr = {5,1,6,4,2,8,9};
inttemp;
for(int x = 0; x<arr.length ; x++ )
{
for(int y = arr.length-1 ; y > x ; y-- )
{
if(arr[y]<arr[y-1])
{
temp= arr[y];
arr[y]= arr[y-1];
arr[y-1]= temp;
}
}
}
for(int a : arr )
{
sop(a);
}
}
publicstatic void sop(Object obj)
{
System.out.println(obj);
}
}
外圈是大体控制内圈是精细控制
查找:
折半条件是对有序数组的查找
注意:
跳出循环的条件是max>=min
原因是如果没有则说明这个数字在数组中的某两个相邻数字之间
设这两个数字为a和b
则该数字c为:
a<c<b 那么a为min b为max mid在a上
当第一次比较的时候 c>a min向右移动此时mid min max重合都在b处
但依然没有找到
当第二次比较的时候 mid在b上 c<b max向左移动此时max<min 这样就可以跳出了说明没找到
class ArrayTest4
{
publicstatic void main(String[] args)
{
int[]arr = {3,1,5,4,2,9};
intflag = halfSearch(2,arr);
sop(flag);
}
publicstatic int halfSearch(int a, int[] arr)
{
int[]myarr = selectSort(arr);
intmin,mid,max;
min= 0;
max= myarr.length-1;
mid= (min+max)/2;
//数组从大到小还是从小到大 是对程序有影响的 要理解才能变通!
while( a != myarr[mid])
{
if(a>myarr[mid])
{
max= mid-1;
}
elseif (a<myarr[mid])
{
min= mid+1;
}
if(min>max)
{
return-1;
}
mid= (min+max)/2;
}
returnmid;
}
publicstatic int[] selectSort(int[] arr)
{
inttemp;
for(int x = 0; x<arr.length-1 ; x++ )
{
for(int y = x+1 ; y <arr.length ; y++ )
{
if(arr[y]>arr[x])
{
temp= arr[y];
arr[y]= arr[x];
arr[x]= temp;
}
}
}
returnarr;
}
publicstatic void sop(Object obj)
{
System.out.print(obj);
}
}
进制转换(原理已述)
排序:
选择冒泡 二分法
选择:
class ArrayTest1
{
publicstatic void main(String[] args)
{
int[]arr = {5,1,6,4,2,8,9};
intmax = 0;
inttemp;
for(int x = 0; x<arr.length-1 ; x++ )
{
for(int y = x+1 ; y <arr.length ; y++ )
{
if(arr[y]>arr[x])
{
temp= arr[y];
arr[y]= arr[x];
arr[x]= temp;
}
}
}
for(int a : arr )
{
sop(a);
}
}
publicstatic void swap(int a , int b) //注意 这个函数是没有效果的
{
inttemp;
temp= a;
a= b;
b=temp;
}
publicstatic void sop(Object obj)
{
System.out.println(obj);
}
}
冒泡
class ArrayTest2
{
publicstatic void main(String[] args)
{
int[]arr = {5,1,6,4,2,8,9};
inttemp;
for(int x = 0; x<arr.length ; x++ )
{
for(int y = arr.length-1 ; y > x ; y-- )
{
if(arr[y]<arr[y-1])
{
temp= arr[y];
arr[y]= arr[y-1];
arr[y-1]= temp;
}
}
}
for(int a : arr )
{
sop(a);
}
}
publicstatic void sop(Object obj)
{
System.out.println(obj);
}
}
外圈是大体控制内圈是精细控制
查找:
折半条件是对有序数组的查找
注意:
跳出循环的条件是max>=min
原因是如果没有则说明这个数字在数组中的某两个相邻数字之间
设这两个数字为a和b
则该数字c为:
a<c<b 那么a为min b为max mid在a上
当第一次比较的时候 c>a min向右移动此时mid min max重合都在b处
但依然没有找到
当第二次比较的时候 mid在b上 c<b max向左移动此时max<min 这样就可以跳出了说明没找到
class ArrayTest4
{
publicstatic void main(String[] args)
{
int[]arr = {3,1,5,4,2,9};
intflag = halfSearch(2,arr);
sop(flag);
}
publicstatic int halfSearch(int a, int[] arr)
{
int[]myarr = selectSort(arr);
intmin,mid,max;
min= 0;
max= myarr.length-1;
mid= (min+max)/2;
//数组从大到小还是从小到大 是对程序有影响的 要理解才能变通!
while( a != myarr[mid])
{
if(a>myarr[mid])
{
max= mid-1;
}
elseif (a<myarr[mid])
{
min= mid+1;
}
if(min>max)
{
return-1;
}
mid= (min+max)/2;
}
returnmid;
}
publicstatic int[] selectSort(int[] arr)
{
inttemp;
for(int x = 0; x<arr.length-1 ; x++ )
{
for(int y = x+1 ; y <arr.length ; y++ )
{
if(arr[y]>arr[x])
{
temp= arr[y];
arr[y]= arr[x];
arr[x]= temp;
}
}
}
returnarr;
}
publicstatic void sop(Object obj)
{
System.out.print(obj);
}
}
进制转换(原理已述)
相关文章推荐
- Webservice讲解
- 第一天
- Android深入浅出之Audio 第二部分 AudioFlinger分析
- QuartZ Cron表达式
- 字符串排序
- 从NN到RNN再到LSTM(附模型描述及详细推导)——(一)NN
- eclipse插件genymotion运行提示Initialize Engine: failed和Virtualbox运行提示创建com对象失败
- PHP 魔术变量
- android 在使用ViewAnimationUtils.createCircularReveal()无法兼容低版本的情况下,另行实现圆形scale动画
- android 的MVVM模型--Data Binding
- linux切换系统jdk方式
- Eclipse4.4 安装java反编译插件Eclipse Class Decompiler
- 07 基本元素 语句
- 有关气象类资料数据下载网址
- iOS后台持续上传定位数据(系统自带的方法)
- Android音频系统之AudioFlinger(一)
- 06 基本元素 变量
- c++标准头文件的结构
- 版本控制git(三)-git分支
- Linux服务器管理: 系统的进程管理top命令