声明:本文纯属个人随手笔记,如果对您有参考价值我十分开心,如果有存在错误,或者有更好的解决办法也麻烦您留言告诉我,大家共同成长,切勿恶言相。 欢迎加入资源共享QQ群:275343679,一起发现知识、了解知识、学习知识、分享知识。网站:www.itlantian.top
=======================================================================
冒泡排序
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
int[] numArray={1,3,2,4,5};
for(int x=0;x<numArray.length-1;x++){
for(int y=0;y<numArray.length-1-x;y++){
if(numArray[y]<numArray[y+1]){
int temp=numArray[y+1];
numArray[y+1]=numArray[y];
numArray[y]=temp;
}
}
}
二分查找算法 (又称:折半查找)
优点:循环比较次数少、查找速度快、平均性能好
缺点:被查询表必须是有序表,且插入删除困难,适用于不经常变动而查找频繁的有序列表
算法描述:它的基本思想是,将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算法终止。如 果x<a[n/2],则我们只要在数组a的左半部继续搜索x(这里假设数组元素呈升序排列)。如果x>a[n/2],则我们只要在数组a的右 半部继续搜索x, 在最坏的情况下用 O(log n)
/**
* 二分查找
* @param numArray 有序数组 例如:int[] numArray={1,2,3,4,5};
* @param num 需要查询的元素 例如:num=4
* @return
*/
public static int getBinarySearchIndex(int[] numArray,int num){
int low=0,hight=numArray.length-1;
while(low<=hight){
int mid =(hight+low)/2;
if(numArray[mid] == num ){
return mid;
}else if(numArray[mid]>num){
hight=mid-1;
}else{
low=mid+1;
}
}
return -1;
}