我们从简单的开始列举所要学习的算法
冒泡算法:
第一个数字和第二个数字比,大的换到后面,第二个数字和第三个数字比,大的换到后面。。。这样一轮下来最后一个数就是最大的那个数字。
每次都在最后面选一个大的
for(int i=0;i<arr.length-1;i++){
for(int j=0;j<arr.length-1-i;j++){
arr[j] = arr[j] ^ arr[j + 1];
arr[j + 1] = arr[j] ^ arr[j + 1];
arr[j] = arr[j] ^ arr[j + 1];
}
}
}
------------------
**选择排序**:(每一轮排下来都在前面选出一个最小的)
for(int i=0;i<arr.length-1;i++){
for(int j=i;j<arr.length-1;j++){
arr[i] = arr[i] ^ arr[j + 1];
arr[j+1] = arr[i] ^ arr[j + 1];
arr[i] = arr[i] ^ arr[j + 1];
}
}
}
-------------------
**二分查找**(需要保证数据按照从小到大排序的)
public static int enFenSearch(int arr[],int key){
int left=0;right=arr.length-1,mid;
while(left<right){
mid=(left+right)>>1;//移位运算符,向右移动一位
if(arr[mid]==key){return mid;}
else if(arr[mid]>key){return right=mid-1;}
else if(arr[mid]<key){return left=mid+1}
}
}