標籤:print nbsp public 利用 roi tom 迴圈控制 情況 androi
1:冒泡排序:冒泡排序的思路: 相鄰的兩個數進行比較(1):首先需要連個for 迴圈(2):最外層for 迴圈控制最裡面 for 迴圈的迴圈次數(3):通過設定中間參數的方式進行交換(4):代碼如下: //冒泡排序public void bubbleSort() {//聲明數組int a[] = {49, 38, 65, 97, 76, 13, 27, 49, 78, 34, 12, 64, 5, 4, 62, 99, 98, 54, 56, 17, 18, 23, 34, 15, 35, 25, 53, 51};int temp = 0;//最外層是不是用來控制裡面接下來需要比較多少次for (int i = 0; i < a.length - 1; i++) { //冒泡排序,把最大的數放到後面for (int j = 0; j < a.length - 1 - i; j++) {//if (a[j] > a[j + 1]) {temp = a[j];a[j] = a[j + 1];a[j + 1] = temp;}}}for (int i = 0; i < a.length; i++)System.out.println(a[i]);} 兩個數直接的互動方式:注意: 在不引入其它變數的情況下交換兩個數,利用兩數之和來做// a = a+b; //a儲存兩數之和// b = a-b; //兩數之和-b,即為a// a = a-b; //兩數之和-b,此時的b已經變成了a,所以相當於sum-a=b// System.out.println("swapBySelf first function:a="+a+",b="+b);// //還有另一種方法,利用兩數之差,即兩數之間的距離// a = b-a; //a=兩者的差// b = b-a; //b = 原來的b-兩數的距離==原來的a// a = a+b; //最終的a=兩者之差+原來的a==原來的b 2:快速排序:(具體實現思路如下)選擇一個基準元素,通常選擇第一個元素或者最後一個元素,通過一趟掃描,將待排序列分成兩部分,一部分比基準元素小,一部分大於等於基準元素,此時基準元素在其排好序後的正確位置,然後再用同樣的方法遞迴地排序劃分的兩部分public static void _choiceSort(Integer[] a) {if (a == null || a.length <= 0) {return;}for (int i = 0; i < a.length; i++) {int min = i; /* 將當前下標定義為最小值下標 */ for (int j = i + 1; j < a.length; j++) {if (a[min] > a[j]) { /* 如果有小於當前最小值的關鍵字 */min = j; /* 將此關鍵字的下標賦值給min */}}if (i != min) {/* 若min不等於i,說明找到最小值,交換 */int tmp = a[min];a[min] = a[i];a[i] = tmp;}}} 3:二分法:(主要是尋找指定的一個數)當資料量很大適宜採用該方法。採用二分法尋找時,資料需是有序不重複的 基本思想:假設資料是按升序排序的,對於給定值 x,從序列的中間位置開始比較,如果當前位置值等於 x,則尋找成功;若 x 小於當前位置值,則在數列的前半段中尋找;若 x 大於當前位置值則在數列的後半段中繼續尋找,直到找到為止。 public class DichotomySearch { public static void main(String[] args) { int[] arr = new int[] { 12, 23, 34, 45, 56, 67, 77, 89, 90 }; System.out.println(search(arr, 12)); System.out.println(search(arr, 45)); System.out.println(search(arr, 67)); System.out.println(search(arr, 89)); System.out.println(search(arr, 99)); } public static int search(int[] arr, int key) { int start = 0; int end = arr.length - 1; while (start <= end) { int middle = (start + end) / 2; if (key < arr[middle]) { end = middle - 1; } else if (key > arr[middle]) { start = middle + 1; } else { return middle; } } return -1; } }
Android 中演算法問題