1、氣泡排序
相鄰元素之間逐對兩兩比較,若不符合預期則先交換位置再繼續比較,如此,每次比較都能把最大或最小的元素放在預期位置,直到完成排序。
/// /// 氣泡排序
///
///
///
public static int popsort(int array)
else continue;}}
return arr;
}
2、快速排序
2、同時從數字序列的兩頭進行掃瞄對比,將大於參考值的數字都放於參考值的一側,小於參考值的數字置於另一側。直到i,j指向同乙個位置,這個位置即為參考值的預期位置,設為m。
3、對大於參考值一側,令i=m+1,對小於參考值的一側,令j=m-1。再分別對參考值的兩側重複步驟1、2。
4、重複步驟1、2、3,直到i>j。
/// /// 快速排序
///
///
///
///
///
private static int sortunit(int array, int left, int right)
array[left] = array[right];
counts.count2++;
while (array[left] <= key && right > left)
array[right] = array[left];
counts.count2++;
}//最後將基準數放到指標重合位置
array[left] = key;
return right;
}/// /// 快速排序
///
/// 要排序的無序陣列
/// 指標left
/// 指標right
public static void quicksort(int array, int left, int right)
//呼叫快速排序方法,將陣列和指標傳入
int index = sortunit(array, left, right);
//遞迴呼叫,分別對排序好的左右兩小部分(左邊小於原先基準數的數列 右邊大於原先基準數的數列)進行重複步驟排序
quicksort(array, left, index - 1);//左邊
quicksort(array, index + 1, right);//右邊
}
3.選擇排序
就像打擂台,把元素乙個乙個往擂台上擺,優勝劣汰,從而確定第一名,第二名,第三名。。。直到排序完成。
public static void selectsort(int arr,int n)
}int tmp = arr[index];
arr[index] = arr[i];
arr[i] = tmp;
system.out.println(arrays.tostring(arr));
}}
4、二分查詢演算法
要求,序列是有序的,思想與快速排序類似,也運用了分而治之。
//遞迴實現二分法查詢
int binarysearch(int * a,int key,int low,int high)
int middle=(low+high)/2;
if(key==a[middle])
if(middle==low||middle==high)
if(key==a[high])
else
}if(keya[middle])
}//迴圈實現二分法查詢
int binarysearchbycircle(int * a,int key,int high)
if(keya[middle])
}return -1;
}
記得應用遞迴時,return,否則會一直執行到return -1,結束,導致輸出始終為-1. 演算法 統計排序(桶排序)
看了一道筆試題,說有100w個資料,範圍在0 65535之間,要求用最少的空間和最快的速度進行排序。剛開始的思路是,65535就是2 16,那首先要把資料型別定義為short。其次,要用最少的空間,那最好還是不用遞迴,那不用快排。不遞迴,速度又快,那肯定是堆排序了。o n 的空間 o nlogn 的...
篩選法統計素數
學習到一種高效的篩選素數的方法 埃拉託色尼篩選法,如果要選出 2,n 範圍內的素數,可以參考以下步驟 1.構造乙個 2,n 範圍的陣列,全部標記為1 true 2.刪除掉陣列中的非素數,將其標記為0 false 刪除2的倍數 刪除3的倍數 刪除4的倍數 沒有必要,已經在 中刪除了 刪除5的倍數 3....
統計學習方法 統計學習基礎(一)
監督學習 統計學習的三要素 模型評估與模型選擇 一 統計學習的特點 以方法為中心 目標是對資料進行 與分析 統計學習的方法 可以總結出統計學習的三要素 模型 策略和演算法。監督學習的任務是學習乙個模型,使模型能夠對任意給定的輸入能做出乙個好的 基本概念 假設空間 模型屬於由輸入空間到輸出空間的對映的...