摘要:各種總結如下小動畫網站冒泡排序原理每次遍歷一遍數組,遇到循環遍歷直至順序正確代碼快速排序原理找到一個基準,每次都將比小的放到左邊,比大的放到右邊,然后對左邊右邊分別再進行快速排序,直到分的子數組只有一個數字為止。
各種SORT總結如下:
小動畫網站:http://jsdo.it/norahiko/oxIy/...
冒泡排序
原理:每次遍歷一遍數組,遇到num[i + 1] < num[i],swap; 循環遍歷直至順序正確
代碼:
public void bubbleSort(int[] nums){
while(!sorted(nums)){ //do nothing } } boolean sorted(int[] nums){ boolean sorted = true; int j = 1; for(int i= 0; i < nums.length - 1; i++){ if(nums[j] < nums[i]){ //swap int temp = nums[i]; nums[i] = nums[j]; nums[j] = temp; sorted = false; } j++; } return sorted; }
快速排序
原理:找到一個基準(pivot),divide and conquer, 每次都將比pivot小的放到左邊,比pivot大的放到右邊,然后對左邊右邊分別再進行快速排序,直到分的子數組只有一個數字為止。
(前一版代碼寫得太亂了不便理解,這里寫一個更廣為接受的)理解為“左邊右邊同時開始,遇到不符合順序的兩個就進行交換”
int partition(int arr[], int left, int right)
{
int i = left, j = right; int tmp; int pivot = arr[(left + right) / 2]; while (i <= j) { while (arr[i] < pivot && i <= j) i++; while (arr[j] > pivot && i <= j) j--; if (i <= j) { tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp; i++; j--; } }; return i;
}
void quickSort(int arr[], int left, int right) {
int index = partition(arr, left, right); if (left < index - 1) quickSort(arr, left, index - 1); if (index < right) quickSort(arr, index, right);
}
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/67065.html
摘要:整個數據流序列 Rxjs入門實踐-各種排序算法排序過程的可視化展示 這幾天學習下《算法》的排序章節,具體見對排序的總結,想著做點東西,能將各種排序算法的排序過程使用Rxjs通過可視化的方式展示出來,正好練系一下Rxjs的使用本文不會太多介紹Rxjs的基本概念,重點介紹如何用響應式編程的思想來實現功能 在線演示地址 源碼 效果圖 showImg(https://segmentfault...
摘要:整個數據流序列 Rxjs入門實踐-各種排序算法排序過程的可視化展示 這幾天學習下《算法》的排序章節,具體見對排序的總結,想著做點東西,能將各種排序算法的排序過程使用Rxjs通過可視化的方式展示出來,正好練系一下Rxjs的使用本文不會太多介紹Rxjs的基本概念,重點介紹如何用響應式編程的思想來實現功能 在線演示地址 源碼 效果圖 showImg(https://segmentfault...
摘要:此專欄文章是對力扣上算法題目各種方法的總結和歸納整理出最重要的思路和知識重點并以思維導圖形式呈現當然也會加上我對導圖的詳解目的是為了更方便快捷的記憶和回憶算法重點不用每次都重復看題解畢竟算法不是做了一遍就能完全記住的所 ...
閱讀 919·2021-11-25 09:43
閱讀 1290·2021-11-17 09:33
閱讀 3008·2019-08-30 15:44
閱讀 3309·2019-08-29 17:16
閱讀 477·2019-08-28 18:20
閱讀 1634·2019-08-26 13:54
閱讀 552·2019-08-26 12:14
閱讀 2172·2019-08-26 12:14