摘要:各種總結(jié)如下小動(dòng)畫網(wǎng)站冒泡排序原理每次遍歷一遍數(shù)組,遇到循環(huán)遍歷直至順序正確代碼快速排序原理找到一個(gè)基準(zhǔn),每次都將比小的放到左邊,比大的放到右邊,然后對(duì)左邊右邊分別再進(jìn)行快速排序,直到分的子數(shù)組只有一個(gè)數(shù)字為止。
各種SORT總結(jié)如下:
小動(dòng)畫網(wǎng)站:http://jsdo.it/norahiko/oxIy/...
冒泡排序
原理:每次遍歷一遍數(shù)組,遇到num[i + 1] < num[i],swap; 循環(huán)遍歷直至順序正確
代碼:
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; }
快速排序
原理:找到一個(gè)基準(zhǔn)(pivot),divide and conquer, 每次都將比pivot小的放到左邊,比pivot大的放到右邊,然后對(duì)左邊右邊分別再進(jìn)行快速排序,直到分的子數(shù)組只有一個(gè)數(shù)字為止。
(前一版代碼寫得太亂了不便理解,這里寫一個(gè)更廣為接受的)理解為“左邊右邊同時(shí)開始,遇到不符合順序的兩個(gè)就進(jìn)行交換”
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);
}
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/67065.html
摘要:排序算法是最基本最常用的算法,不同的排序算法在不同的場(chǎng)景或應(yīng)用中會(huì)有不同的表現(xiàn),我們需要對(duì)各種排序算法熟練才能將它們應(yīng)用到實(shí)際當(dāng)中,才能更好地發(fā)揮它們的優(yōu)勢(shì)。今天,來(lái)總結(jié)下各種排序算法。 排序算法是最基本最常用的算法,不同的排序算法在不同的場(chǎng)景或應(yīng)用中會(huì)有不同的表現(xiàn),我們需要對(duì)各種排序算法熟練才能將它們應(yīng)用到實(shí)際當(dāng)中,才能更好地發(fā)揮它們的優(yōu)勢(shì)。今天,來(lái)總結(jié)下各種排序算法。 下面這個(gè)表格...
摘要:整個(gè)數(shù)據(jù)流序列 Rxjs入門實(shí)踐-各種排序算法排序過(guò)程的可視化展示 這幾天學(xué)習(xí)下《算法》的排序章節(jié),具體見對(duì)排序的總結(jié),想著做點(diǎn)東西,能將各種排序算法的排序過(guò)程使用Rxjs通過(guò)可視化的方式展示出來(lái),正好練系一下Rxjs的使用本文不會(huì)太多介紹Rxjs的基本概念,重點(diǎn)介紹如何用響應(yīng)式編程的思想來(lái)實(shí)現(xiàn)功能 在線演示地址 源碼 效果圖 showImg(https://segmentfault...
摘要:整個(gè)數(shù)據(jù)流序列 Rxjs入門實(shí)踐-各種排序算法排序過(guò)程的可視化展示 這幾天學(xué)習(xí)下《算法》的排序章節(jié),具體見對(duì)排序的總結(jié),想著做點(diǎn)東西,能將各種排序算法的排序過(guò)程使用Rxjs通過(guò)可視化的方式展示出來(lái),正好練系一下Rxjs的使用本文不會(huì)太多介紹Rxjs的基本概念,重點(diǎn)介紹如何用響應(yīng)式編程的思想來(lái)實(shí)現(xiàn)功能 在線演示地址 源碼 效果圖 showImg(https://segmentfault...
摘要:此專欄文章是對(duì)力扣上算法題目各種方法的總結(jié)和歸納整理出最重要的思路和知識(shí)重點(diǎn)并以思維導(dǎo)圖形式呈現(xiàn)當(dāng)然也會(huì)加上我對(duì)導(dǎo)圖的詳解目的是為了更方便快捷的記憶和回憶算法重點(diǎn)不用每次都重復(fù)看題解畢竟算法不是做了一遍就能完全記住的所 ...
摘要:數(shù)組元素的讀寫使用訪問(wèn)數(shù)組元素時(shí),將索引轉(zhuǎn)換為字符串,然后將其作為屬性名一樣使用。第一個(gè)參數(shù)應(yīng)該在前只展開一層數(shù)組元素不變,返回注意,只拼接第一層結(jié)構(gòu)。 此乃犀牛書(第七章 數(shù)組)讀書筆記,又結(jié)合了ES6中數(shù)組的擴(kuò)展部分做的知識(shí)梳理。精華部分就是手工繪制的兩張數(shù)組總結(jié)圖了。靈活運(yùn)用數(shù)組的各種方法是基本功,是基本功,是基本功,重要的事情說(shuō)三遍。好了,正文從下面開始~ 數(shù)組的基本概念 什么...
閱讀 1058·2021-11-25 09:43
閱讀 1439·2021-11-17 09:33
閱讀 3155·2019-08-30 15:44
閱讀 3531·2019-08-29 17:16
閱讀 600·2019-08-28 18:20
閱讀 1800·2019-08-26 13:54
閱讀 684·2019-08-26 12:14
閱讀 2294·2019-08-26 12:14