三种方式写了下常见的查找和排序,思想的本质是一致的,语言的运用有所不同罢了
PS:尴尬。真的有必要随时切换语言来编程,否则还想个半天.就跟前后台的模板引擎一样,花样太多.
JS 二分查找
/**
* @param v Number 要查找的值
* @param a Array 数组(有序的:升序,譬如[2,3,4])
* @param return 所在下标;-1,则不存在
**/
function erFen(v,a){
var start = 0,
end = a.length-1;
while(start<=end){
var index = Math.floor((start+end)/2);
if(v>a[index]){
start = index+1;
}else if(v<a[index]){
end = index-1;
}else{
return index;
}
}
return -1;
}
PHP 选择排序
/**
* @param [type] $arr 数组
* @return [type]
*/
function select($arr){
$cnt = count($arr);
for ($i=0; $i < $cnt; $i++) {
for ($j=$i+1; $j < $cnt; $j++) {
// 从小到大排序
if($arr[$i]>$arr[$j]){
$arr = exchange($i,$j,$arr);
}
}
}
return $arr;
}
/**
* 数组内元素交换
* @param [type] $arr [数组]
* @param [type] $i [待交换的元素下标]
* @param [type] $j [待交换的元素下标]
*/
function exchange($i,$j,$arr){
$arr[$i] = $arr[$i]^$arr[$j];
$arr[$j] = $arr[$i]^$arr[$j];
$arr[$i] = $arr[$i]^$arr[$j];
return $arr;
}
JAVA 冒泡排序
import java.util.Arrays;
public class Tools {
public static void main(String []args) {
int[] arr = {1,6,-2};
System.out.print(Arrays.toString(bubble(arr)));
}
public static int[] bubble(int[] arr){
int cnt = arr.length;
for (int i = 0; i<cnt; i++) {
for (int j=0;j<cnt-1-i; j++) {
if(arr[j]>arr[j+1]){
exchange(j,j+1,arr);
}
}
}
return arr;
}
/**
* 数组内元素交换
* @param [type] arr [数组]
* @param [type] a [待交换的元素下标]
* @param [type] b [待交换的元素下标]
*/
public static void exchange(int a,int b,int[] arr){
int temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。