三種方式寫了下常見的查找和排序,思想的本質是一致的,語言的運用有所不一樣罷了
PS:尷尬。真的有必要隨時切換語言來編程,不然還想個半天.就跟先後臺的模板引擎同樣,花樣太多.java
/** * @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; }
/** * @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; }
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; } }