摘要:接下來我來說明快速排序的思路以及實(shí)現(xiàn)的代碼。快速排序思路首先是定義一個(gè)變量,把數(shù)組的第一個(gè)元素的值賦給,然后定義兩個(gè)變量指向數(shù)組的第一個(gè)元素和最后一個(gè)元素。
今天突然想寫個(gè)排序,以前寫過,然后寫了之后一直出錯(cuò),然后自己百度了一下,看了別人寫的方法,自己也嘗試著寫了一個(gè)。接下來我來說明快速排序的思路以及實(shí)現(xiàn)的代碼。
快速排序思路:首先是定義一個(gè)變量key,把數(shù)組的第一個(gè)元素的值賦給key,然后定義兩個(gè)變量start,end指向數(shù)組的第一個(gè)元素和最后一個(gè)元素。然后從后往前遍歷,一直end--,知道下標(biāo)為end的值小于key,就交換下標(biāo)為start,end的值,然后再?gòu)那氨闅v,一直start++,直到下標(biāo)為start的值大于key,就交換下標(biāo)為start,end的值。這樣,經(jīng)過一次排序之后,小于key的出現(xiàn)在key的左邊,大于key的出現(xiàn)在key的右邊。然后再用遞歸對(duì)key的左右兩邊進(jìn)行上述方法進(jìn)行排序。
快速排序
代碼:
//判斷數(shù)組是否為空,數(shù)組元素是否為0 if (data.length < 1 || data == null) { return; } //頭指針小于尾指針,則返回 if (start >= end) { return; } //數(shù)組不為空且元素個(gè)數(shù)大于0 boolean flag = true; int low = start; int high = end; int key = data[low]; while (low < high) { //flag用來判斷是否從下標(biāo)為high的值與基準(zhǔn)進(jìn)行比較 if (flag) { if (data[high] < key) { swmp(data, low, high); flag = false; } else { high--; } } else { //判斷下標(biāo)為low的值是否與基準(zhǔn)進(jìn)行比較。 if (data[low] > key) { swmp(data, low, high); flag = true; } else { low++; } } } soft_quick(data, start, low - 1); soft_quick(data, high + 1, end); int temp = data[start]; data[start] = data[end]; data[end] = temp; for (int index : data) { System.out.print(index + " "); } System.out.println();
最后是運(yùn)行結(jié)果:
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/65911.html
摘要:結(jié)構(gòu)型模式適配器模式橋接模式裝飾模式組合模式外觀模式享元模式代理模式。行為型模式模版方法模式命令模式迭代器模式觀察者模式中介者模式備忘錄模式解釋器模式模式狀態(tài)模式策略模式職責(zé)鏈模式責(zé)任鏈模式訪問者模式。 主要版本 更新時(shí)間 備注 v1.0 2015-08-01 首次發(fā)布 v1.1 2018-03-12 增加新技術(shù)知識(shí)、完善知識(shí)體系 v2.0 2019-02-19 結(jié)構(gòu)...
摘要:強(qiáng)烈推薦上值得前端學(xué)習(xí)的數(shù)據(jù)結(jié)構(gòu)與算法項(xiàng)目,包含圖的演示過程與視頻講解。該倉(cāng)庫(kù)包含了多種基于的算法與數(shù)據(jù)結(jié)構(gòu),提供進(jìn)一步閱讀的解釋和鏈接。數(shù)據(jù)結(jié)構(gòu)和算法必知必會(huì)的個(gè)代碼實(shí)現(xiàn)。 showImg(https://segmentfault.com/img/bVbvpYZ); 前言 算法為王。想學(xué)好前端,先練好內(nèi)功,內(nèi)功不行,就算招式練的再花哨,終究成不了高手;只有內(nèi)功深厚者,前端之路才會(huì)走得...
摘要:可見快速排序不是穩(wěn)定的排序。在這種小數(shù)組的情況下,其實(shí)一些基礎(chǔ)排序算法反而比快速排序要快。當(dāng)一個(gè)數(shù)組為無序并且重復(fù)元素不多時(shí)候,也適合快速排序。 分治思想 關(guān)于排序,江湖盛傳有一種分治思想,能大幅度提高排序心法的性能。所謂分治,即:化大為小,分而治之。達(dá)到治小而治大的成效。多年來基于分治思想衍生出多種排序心法,然萬變不離其宗!雖然江湖上算法內(nèi)功繁多,但是好的算法小編認(rèn)為必須符合以下幾...
摘要:可見快速排序不是穩(wěn)定的排序。在這種小數(shù)組的情況下,其實(shí)一些基礎(chǔ)排序算法反而比快速排序要快。當(dāng)一個(gè)數(shù)組為無序并且重復(fù)元素不多時(shí)候,也適合快速排序。 分治思想 關(guān)于排序,江湖盛傳有一種分治思想,能大幅度提高排序心法的性能。所謂分治,即:化大為小,分而治之。達(dá)到治小而治大的成效。多年來基于分治思想衍生出多種排序心法,然萬變不離其宗!雖然江湖上算法內(nèi)功繁多,但是好的算法小編認(rèn)為必須符合以下幾...
閱讀 2692·2021-09-22 15:58
閱讀 2236·2019-08-29 16:06
閱讀 904·2019-08-29 14:14
閱讀 2814·2019-08-29 13:48
閱讀 2457·2019-08-28 18:01
閱讀 1501·2019-08-28 17:52
閱讀 3323·2019-08-26 14:05
閱讀 1619·2019-08-26 13:50